目录
- 面试题
- 一些概念
- 管理系统服务
- systemctl start restart stop enable disable status
- ps (显示当前进程的状态) aux -aux -ef -efH -axo --sort
- top 实时显示 process 的动态
- kill pkill
- 进程优先级
- 查看nice值
- 指定nice值
- 修改nice值
- PR和NI的关系
- 将任务放到后台运行 & jobs fg bg nohub
- 存储管理
- 管理分区 parted fdisk gdisk df
- 文件系统 mkfs
- mount挂载 bkid mount umount /etc/fstab
- 添加交换分区 mkswap swapon free
- 磁盘容量配额 quota
- 软硬方式链接 ln
- 软链接
- 硬链接
- 磁盘阵列 RAID mdadm RAID0 RAID1 RAID10
- LVM逻辑卷管理器
- 核心概念
- 部署 pvcreate vgcreate lvcreate
- 扩容 lvextend
- 缩容 lvreduce
- 软件包管理
- yum
- 创建本地yum镜像仓库
- 提供内网服务器软件包更新
- rpm -ivh -qa -ql -qc -qi
- 编译
面试题
- 什么是进程?
- 进程、线程、协程的区别有哪些?
- 什么是僵尸进程?
- 进程的状态有哪些?
- 什么是守护进程?
- 什么是swap分区?
- buffer和cache的区别?
- 日志式文件系统和索引文件系统之间有什么区别?
- 什么是inode、什么是block?
- 软连接文件和硬链接文件有什么区别
一些概念
硬盘基础知识
- 机械硬盘
- 固态硬盘
- MBR分区
- GPT分区
du -sh /etc:可以查看某个具体目录的大小
僵尸进程:
当一个子进程终止,但它的父进程还没有通过 `wait()` 或类似系统调用来读取它的退出状态时,该子进程就变成了“僵尸进程”。在 `ps` 的状态列通常显示为 `Z`。僵尸进程不消耗实质性的资源(如内存),其 PID 会一直占用直到父进程“收尸”。通常如果父进程设计良好或结束,僵尸进程会消失。如果父进程卡死,可能需要先终止父进程来解决僵尸进程累积问题。
管理系统服务
systemctl
- start 开启
systemctl start 服务名称 - stop 关闭
systemctl stop 服务名称 - restart 重开
systemctl restart 服务名称 - enable 开机自启动
systemctl enable 服务名称 - disable 取消开机自启动
systemctl disable 服务名称 - status 查看服务状态,可以看到是否是打开状态或者是否是开机自启动状态
systemctl status 服务名称
ps 显示当前进程的状态
- aux 查看所有进程 BSD风格 -aux UNIX 标准或 POSIX 标准同上,有一点小区别,且不是所有Linux系统都兼容,推荐上面那个应用指令
- -ef -e 显示所有进程 -f 显示完整格式信息
- -efH
- -axo
- --sort
top 实时显示 process 的动态
- 第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平 均值,数值越小意味着负载越低)。
- 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。
- 第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。(buffer和cache之间的区 别,cache是提高cpu和内存之间的数据交换速度,buffer是io设备和存储设备之间的缓冲区)
- 第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
- 快捷键:
- 快捷键 功能 空格 立即刷新 P 根据CPU使用多少排序 T 根据时间、累计排序 q 退出top命令 m 切换显示内存信息 t 切换显示进程和CPU状态信息 c 切换显示命令名称和完整命令行 M 根据内存的大小排序 W 将当前设置写入 ~/.toprc 文件中,这是top配置文件推荐方法 N 以PID的大小排序 z 彩色
- -d 指定刷新的时间间隔,比如一秒
[root@localhost ~]# top -d 1
- -c 显示完整指令
- -n N 更新多少次(N)后结束
[root@localhost ~]# top -n 2
- -p 查看指定进程
- -u 查看指定用户
[root@localhost ~]# top -d 1 -u user01
- -b 输出到前台,将top写入到文件
[root@localhost ~]# top -d 1 -b -n 2 > top.txt
kill 删除执行中的程序或工作,将指定的信号送至程序
- -l 列出全部信号的名称(不是所有的信号都要求掌握)
- kill 的语法,是pgrep不是grep,pgrep才是对进程进行筛选的
pkill 进程名结束具体某个进程 不要加其他东西,反引号和 pgrep都不要,直接加进程名就好,比如 pkill ping 或者 pkill sshd-u结束某个用户所有进程pkill -u user1-t结束某个shell所有进程- cat /run/sshd.pid #每个服务的pid文件路径并不一定一致
- ps -aux |grep sshd
- pgrep -l sshd
- pidof sshd
jobs查看后台任务队列fg % 工作号将任务恢复到前台bg %n可以使暂停的任务恢复到运行nohupnohup 命令 & 这样放入后台的命令与终端无关,是不依赖登录终端的,但是要把放到后台的命令放回前台操作复杂一点- parted 高级分区操作
- 对磁盘进行分区
# 创建1个G大小的分区 [root@localhost ~]# parted /dev/nvme0n2 mkpart primary 1 1G - 删除分区
root@localhost ~]# parted /dev/nvme0n2 rm 1 - 查看分区
lsblk - fdisk 管理GPT分区
创建分区步骤: 1.[root@localhost ~]# fdisk /dev/nvme0n2 2.创建分区 Command (m for help): n 3.回车直到出现以下信息: Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-10485759, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-10485759, default 10485759): 4.上述信息末尾敲下:+1G 即可创建一个大小为1G的分区 5.p 查看分区信息: Device Boot Start End Sectors Size Id Type /dev/nvme0n2p1 2048 2099199 2097152 1G 83 Linux 6.w 保存并退出- gdisk 管理MBR分区,和 fdisk 同
- df : 用于报告文件系统的磁盘空间使用情况
- -T
- -h
- -Th 显示已挂载分区的文件系统类型(包含使用率)
- 日志式文件系统
- 索引式文件系统
- mkfs
mkfs.文件系统名称 分区的文件目录,/dev/... - blkid 查看每个磁盘的UUID(设备唯一标识符)
- mount
mount 分区的文件目录,/dev/... 挂载目录 - umount 撤销挂载
umount 分区的文件目录,/dev/... - 永久挂载 写入到/etc/fstab文件
- mkswap:制作交换分区
- swapon:临时开启swap交换分区
- 需要永久生效的话写入到/etc/fstab中,格式如下:
/dev/nvme0n3 swap swap defaults 0 0 - free:查看内存
- -m:以MB为单位进行显示
- -g:以GB为单位进行显示
- -h:以人类易读的方式显示单位
- ln
- -s 软链接
ln -s 源文件目录 链接文件目录[root@localhost ~]# ln -s testfile linkfile - 不加-s 默认硬链接
[root@localhost ~]# ln testfile linkfile - RAID : 多个物理盘组成一个逻辑盘
- RAID 0 数据分块在多个磁盘存储,速度快,不安全,不备份
- RAID 1 数据在两个磁盘各存一份,安全一些,效率低
- RAID 5 综合了数据加速和备份,原理是通过奇偶校验进行计算
- RAID 10 先RAID1再RAID0,综合RAID0和RAID1的优点,至少需要四块磁盘
- RAID 01 先RAID0再RAID1,综合RAID0和RAID1的优点,至少需要四块磁盘
- 磁盘速率测试
- mdadm
- 安装
[root@localhost ~]# yum -y install mdadm - -Cv -C 创建 -v 显示创建过程
- -S 删除磁盘阵列
- -a 检测设备名称
- -n 设备数量
- -l 要创建的RAID级别
- -x 备份盘数量
- -D 查看磁盘阵列的详细信息,
mdadam -D 磁盘阵列保存的目录 - -f 模拟磁盘损坏
- 创建物理卷pvcreate
- 创建卷组vgcreate
vgcreate 卷组名称 物理卷 - 创建逻辑卷lvcreate
- -n 名称 -l 容量:n个4MB单位大小 -L 具体大小
- 格式化+挂载 mkfs mount
- 取消挂载umount
- lvextend进行扩容
- 检查文件系统e2fsck
- 刷新文件系统resize2fs
- 再重新挂载
- 取消挂载umount
- 检查文件系统e2fsck
- 刷新文件系统resize2fs
- lvreduce进行缩容
- 再重新挂载
- 取消挂载umount
- 删除配置文件中的永久设备参数 /etc/fstab
- 删除逻辑卷 lvremove /dev/storage/vo
- 删除卷组 vgremove storage
- 删除物理卷 pvremove /dev/nvme0n2 /dev/nvme0n3
- yum常用方式 yum install -y:安装软件包 yum reinstall -y:重新安装软件包 yum update:更新软件包 yum remove -y:删除软件包 yum repolist:查看仓库列表 yum clean all:清除缓存 yum makecache:构建缓存 yum provides:查找某个命令或者文件是由哪个软件提供的 yum search:查找软件包 yum list installed:列出已安装软件包 yum list:列出所有可以使用的软件包
- yum仓库的配置文件目录 /etc/yum.repos.d/
- 批量替换镜像地址
[minimal]
name= RockyLinux 9.4 minimal baseurl=file:///media/cdrom/minimal/ enabled=1 gpgcheck=0 5.下载可以下载一些东西验证一下了 [root@localhost ~]# yum install net-tools -y 6.[root@localhost ~]# ifconfig
提供内网服务器软件包更新
- server1通过ftp提供镜像源,server2配置yum仓库来指定从server1进行更新软件包
- server1上需要做的工作:
[root@server1 ~]# yum clean all
25 files removed
[root@server1 ~]# yum update -y --downloadonly --downloaddir=/packages
#在装vsftpd的包之前先将缓存下来的rpm包移走,这步操作参考课件
[root@server1 ~]# mkdir -pv /var/ftp/update/
[root@server1 ~]# cd /packages/
[root@server1 packages]# cp -r * /var/ftp/update/
[root@server1 ~]# yum install vsftpd -y
[root@server1 ~]# cd /var/ftp/update
[root@server1 update]# yum install -y createrepo
[root@server1 update]# createrepo /var/ftp/update/
[root@server1 update]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
[root@server1 update]# systemctl start vsftpd
[root@server1 update]# systemctl stop firewalld
[root@server1 update]# setenforce 0
- server2上需要做的工作:
[root@server2 ~]# mkdir /repoback
[root@server2 ~]# mv /etc/yum.repos.d/* /repoback/
[root@server2 ~]# cd /etc/yum.repos.d/
[root@server2 yum.repos.d]# vi update.repo
[update]
name=RockyLinux update baseurl=ftp://192.168.80.132/update enabled=1 gpgcheck=0 [root@server2 yum.repos.d]# yum repolist repo id repo name update RockyLinux update [root@server2 yum.repos.d]# yum clean all 25 files removed [root@server2 yum.repos.d]# yum update -y --skip-broken --nobest
#### rpm
rpm包管理
- -ivh:安装
- -uvh:更新
- -e:卸载软件包
- -qa:查询所有软件包
- -qi:已安装软件包的详细信息
- -ql:查询软件包在系统上安装的文件
- -qc:查询软件包安装时安装了哪些配置文件
编译
三部曲:
- ./configure
- make
- make install
案例步骤:
1,把炫酷代码雨的压缩包移到/root下
2.下载编译工具
[root@localhost ~]# yum -y install ncurses* gcc gcc-c++
3.解压
[root@localhost ~]# tar -zxvf cmatrix-1.2a.tar.gz
4.[root@localhost ~]# cd cmatrix-1.2a
5.编译三部曲
[root@localhost cmatrix-1.2a]# ./configure
[root@localhost cmatrix-1.2a]# make
[root@localhost cmatrix-1.2a]# make install
[root@localhost cmatrix-1.2a]# cmatrix
- 解压 tar
-c 表示创建一个新的归档文件。
-v 表示在压缩过程中显示详细信息(verbose 详细模式)。
-f 指定归档文件的名称。
-x 表示解压缩。
-v 表示显示详细信息。
-f 指定要解压缩的归档文件。
# 如果要创建gzip压缩包
tar -zcvf archive.tar.gz /path/to/directory






Comments NOTHING