Linux day 04-day 05

发布于 2025-10-01  62 次阅读


目录

  • 面试题
  • 一些概念
  • 管理系统服务
  • 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 可以使暂停的任务恢复到运行
  • nohup nohup 命令 & 这样放入后台的命令与终端无关,是不依赖登录终端的,但是要把放到后台的命令放回前台操作复杂一点
  • 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
A life of freedom is all my ambition
最后更新于 2025-10-01