一、命令行使用技巧
1、什么是内核、什么是shell、什么是Linux、什么是开源
内核 :是操作系统的核心组件,负责管理硬件资源(如 CPU、内存、磁盘)、进程调度等底层工作,是系统与硬件交互的桥梁。
shell: 是用户与内核之间的交互界面(命令解释器),用户通过 shell 输入命令,由 shell 传递给内核执行并返回结果(常见的 shell 有 bash、zsh 等)。
Linux :是一种基于 UNIX 的开源操作系统,由内核、shell 及各类工具 / 应用组成,广泛用于服务器、嵌入式设备等场景。
开源:指软件的源代码公开,用户可自由获取、修改、分发,Linux 是开源软件的典型代表。
2、Linux中命令录入方式
直接在终端(Terminal)中输入命令后按回车执行,支持单行 / 多行(通过反斜杠\换行)输入。
3、命令行快捷键
常用如Ctrl+C终止进程、Ctrl+D退出当前 shell、Ctrl+L清屏等,用于提升操作效率。
4、命令行补齐 <TAB>
输入命令 / 路径的部分字符后按Tab键,可自动补全完整内容(连续按两次可显示所有匹配项)。
5、命令行中如何获得帮助 ---help man
用命令 --help查看命令的简要帮助信息;
用man 命令查看更详细的手册(按q退出手册)。
二、Linux下文件管理
1、touch 、mkdir 、rm 、cp 、mv、cat、head 、less、vim、 file 、wc、 ls
|--------|---------------------------------------------|
| 命令 | 作用 |
| touch | 创建空文件,或修改文件的时间戳 |
| mkdir | 创建新目录(加-p可创建多级目录) |
| rm | 删除文件 / 目录(加-r递归删除目录,-f强制删除) |
| cp | 复制文件 / 目录(加-r复制目录) |
| mv | 移动 / 重命名文件 / 目录 |
| cat | 查看文件内容(适合短文件) |
| head | 查看文件前 N 行(默认前 10 行,如head -5 文件名) |
| less | 分页查看长文件内容(按PageUp/PageDown翻页,q退出) |
| vim | 文本编辑器,可用于创建 / 编辑文件(需掌握基本操作:i插入、:wq保存退出) |
| file | 查看文件的类型(如文本、二进制、压缩包等) |
| wc | 统计文件的行数、单词数、字节数(如wc -l 文件名统计行数) |
| ls | 列出目录内容(加-l显示详细信息,-a显示隐藏文件) |
2、二级目录的作用
二级目录是指在主目录下再划分的子目录,核心作用是:
- 分类管理文件,避免文件杂乱(如/home下按用户划分目录);
- 实现权限隔离,不同目录可设置不同的访问权限;
- 便于系统维护,标准化的二级目录(如 Linux 的/etc、/var)是系统规范的一部分。
3、文件寻址 相对路径 绝对路径
- **绝对路径:**从根目录(/)开始的完整路径,如/home/user/doc.txt,定位唯一且明确;
- **相对路径:**从当前所在目录开始的路径,如当前在/home,则user/doc.txt等价于上述绝对路径,更简洁但依赖当前位置。
4、文件批处理
* 、?、 \[:alpha:] 、 \[:aigit:] 、 \[:lower:] 、\[:upper:] 、 \[:alnum:] 、 \[:punct:] 、 \[:space:]、 \[\]、 {}
|-------------------------|--------------------------------------------|
| 通配符 | 作用 |
| * | 匹配任意长度的任意字符(如*.txt匹配所有 txt 文件) |
| ? | 匹配单个任意字符(如file?.txt匹配file1.txt) |
| :alpha: | 匹配单个字母(含大小写) |
| [:lower:]/``[:upper:] | 匹配单个小写 / 大写字母 |
| :alnum: | 匹配单个字母或数字 |
| :punct: | 匹配单个标点符号 |
| \[\] | 匹配括号内的任意一个字符(如abc.txt匹配a.txt等) |
| {} | 匹配大括号内的任意一个字符串(如{a,b}c.txt匹配ac.txt、bc.txt) |
| :digit: | 匹配单个数字 |
| :space: | 匹配单个空白字符(空格、制表符等) |
实验:
#说明:建议开启两个shell,在一个shell中开启监控
root@localhost mnt# watch -n 1 ls -Rl
#在另外一个shell中操作
root@localhost mnt# touch le8e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr lee
root@localhost mnt# touch le8e leAe le@e leae le\ e lee
root@localhost mnt#
root@localhost mnt# rm -fr *
root@localhost mnt# touch le8e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr ???
root@localhost mnt# touch le8e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr ????
root@localhost mnt# touch le8e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le*e
root@localhost mnt# touch le8e leAe le@e leae le\ e lee file
root@localhost mnt# rm -fr le*e
root@localhost mnt# rm -fr *
root@localhost mnt# touch le8e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:digit:]e
root@localhost mnt# touch le8e leAe le@e leae le\ e lee
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# touch le66e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:digit:]e
root@localhost mnt# rm -fr le\[:digit:]\[:digit:]e
root@localhost mnt# touch le66e leAe le@e leae le\ e lee
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:digit:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:punct:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:punct:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt#
root@localhost mnt# rm -fr le\[:punct:]*e
root@localhost mnt# rm -fr le\[:space:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:alpha:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:upper:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:lower:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:alnum:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\[:punct::space:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le!\[:punct::space:]*e
root@localhost mnt# touch le6e leAe le@e leae le\ e lee
root@localhost mnt# rm -fr le\^\[:punct::space:]*e
复制指定目录中符合指定条件的文件到指定位置并加入特定后缀
#复制/etc/中以.conf 结尾的文件到/mnt/conf.bak/中并加入.bak后缀
root@localhost mnt# find /etc -type f -name "*.conf" -exec sh -c 'cp "1" "/mnt/conf.bak/(basename "$1").bak"' _ {} \;
root@localhost mnt# ls /etc | awk '/\.conf/{system("cp -r /etc/"0 " /mnt/conf.bak/"$0".bak")}'
三、Linux中的输入和输出
1、字符设备是啥?
字符设备是 Linux 中一类按 "字符流" 方式交互的硬件设备(属于设备文件的一种),特点是按顺序、逐个字符传输数据,无缓存或缓存极小,典型例子包括终端(/dev/tty)、键盘、串口等。
它是 Linux 输入输出的硬件基础之一,命令行的输入输出默认就是通过字符设备(终端)完成的。
2、输入和输出的基本原理
Linux 中进程的输入输出通过文件描述符(FD) 管理,默认有 3 个标准 FD:
- 0(标准输入,stdin):默认对应键盘,是进程获取输入的来源;
- 1(标准输出,stdout):默认对应终端屏幕,是进程正常输出的目标;
- 2(标准错误输出,stderr):默认对应终端屏幕,是进程错误信息的输出目标。
进程的输入输出本质是对这些 FD 的读写操作。
3、输出重定向
将进程的输出(stdout/stderr)从默认终端,转向文件或其他目标,常用符号:
|-----|-----------------------------------|---------------------------------------|
| 符号 | 作用 | 示例 |
| > | 覆盖式重定向 stdout 到文件(文件不存在则创建,存在则清空) | ls > file.txt(将 ls 结果存到 file.txt) |
| 2> | 覆盖式重定向 stderr 到文件 | ls /error 2> err.log(错误信息存到 err.log) |
4、追加
在输出重定向的基础上,保留文件原有内容,将新输出追加到末尾,对应符号:
|-------|-------------------|-------------------------------|
| 符号 | 作用 | 示例 |
| >> | 追加式重定向 stdout 到文件 | echo "new line" >> file.txt |
| 2>> | 追加式重定向 stderr 到文件 | ls /error 2>> err.log |
5、输入重定向
将进程的输入(stdin)从默认键盘,转向文件或其他目标,常用符号:
|------|-------------------------------------|----------------------------------|
| 符号 | 作用 | 示例 |
| < | 将文件内容作为进程的输入 | cat < file.txt(等价于cat file.txt) |
| << | 此处文档(Here Document):指定结束符,将中间内容作为输入 | cat << EOF(输入内容,以 EOF 结束) |
6、多行录入
通常通过此处文档(<<) 实现,用于向进程传递多行输入,格式:

cat > file.txt << EOF
hello
linux
input/output
EOF
7、管道
用|符号将前一个命令的 stdout,作为后一个命令的 stdin,实现命令间的 "数据传递",示例:
bash
ls -l | grep ".txt" # 将ls的结果传递给grep,筛选出含.txt的行
8、错误输出通过管道
默认管道仅传递 stdout,若要传递 stderr,需先将 stderr 重定向到 stdout(2>&1),再通过管道传递,示例:
bash
ls /error 2>&1 | grep "No such file" # 将错误信息传递给grep筛选
9、输出复制
用tee命令实现 "输出同时保存到文件和终端",即复制 stdout,示例:
bash
ls | tee file.txt # 同时在终端显示ls结果,并将结果保存到file.txt
实验步骤:
1、建立实验环境
root@localhost mnt# chmod 777 /mnt/
root@localhost mnt# watch -n 1 cat *
2、在另一个shell中
root@localhost mnt# useradd lee
root@localhost mnt# su - lee
lee@localhost \~$
3、实验过程
lee@localhost \~$ find /etc/ -name passwd 2> /mnt/lee
/etc/pam.d/passwd
/etc/passwd
lee@localhost \~$ find /etc/ -name passwd &> /mnt/lee
lee@localhost \~$ > /mnt/lee
lee@localhost \~$
lee@localhost \~$ echo hello linux > lee
lee@localhost \~$ echo hello linux > lee^C
lee@localhost \~$ cd /mnt/
lee@localhost mnt$ echo hello linux > lee
lee@localhost mnt$ echo hello linux > lee
lee@localhost mnt$ find /etc/ -name passwd >> /mnt/lee
find: '/etc/sudoers.d': 权限不够
find: '/etc/pki/rsyslog': 权限不够
find: '/etc/sssd': 权限不够
find: '/etc/nftables': 权限不够
find: '/etc/sos/cleaner': 权限不够
find: '/etc/ssh/sshd_config.d': 权限不够
find: '/etc/lvm/archive': 权限不够
find: '/etc/lvm/backup': 权限不够
find: '/etc/lvm/cache': 权限不够
find: '/etc/lvm/devices': 权限不够
find: '/etc/polkit-1/rules.d': 权限不够
find: '/etc/polkit-1/localauthority': 权限不够
find: '/etc/grub.d': 权限不够
find: '/etc/audit': 权限不够
find: '/etc/firewalld': 权限不够
lee@localhost mnt$ find /etc/ -name passwd ^C /mnt/lee
lee@localhost mnt$
lee@localhost mnt$ tr ''
tr: "" 后缺少操作数
当进行替换操作时必须给定两组字符串。
请尝试执行 "tr --help" 来获取更多信息。
lee@localhost mnt$ cat lee | tr 'a-z' 'A-Z'
HELLO LINUX
/ETC/PAM.D/PASSWD
/ETC/PASSWD
lee@localhost mnt$
lee@localhost mnt$ tr 'a-z' 'A-Z' <lee
HELLO LINUX
/ETC/PAM.D/PASSWD
/ETC/PASSWD
lee@localhost mnt$ echo haha | tr 'a-z' 'A-Z'
HAHA
lee@localhost mnt$ echo -e "haha\nhehe" | tr 'a-z' 'A-Z'
HAHA
HEHE
lee@localhost mnt$ tr 'a-z' 'A-Z' <<EOF
> hehe
> haha
> xixi
> EOF
HEHE
HAHA
XIXI
lee@localhost mnt$
lee@localhost mnt$ echo haha | tr 'a-z' 'A-Z' ^C
lee@localhost mnt$ find /etc/ -name passwd | wc -l
find: '/etc/sudoers.d': 权限不够
find: '/etc/pki/rsyslog': 权限不够
find: '/etc/sssd': 权限不够
find: '/etc/nftables': 权限不够
find: '/etc/sos/cleaner': 权限不够
find: '/etc/ssh/sshd_config.d': 权限不够
find: '/etc/lvm/archive': 权限不够
find: '/etc/lvm/backup': 权限不够
find: '/etc/lvm/cache': 权限不够
find: '/etc/lvm/devices': 权限不够
find: '/etc/polkit-1/rules.d': 权限不够
find: '/etc/polkit-1/localauthority': 权限不够
find: '/etc/grub.d': 权限不够
find: '/etc/audit': 权限不够
find: '/etc/firewalld': 权限不够
2
lee@localhost mnt$ find /etc/ -name passwd 2>&1 | wc -l
17
lee@localhost mnt$ find /etc/ -name passwd 2>&1 | wc -l
17
lee@localhost mnt$ find /etc/ -name passwd 2>&1 | tee file | wc -l
17
lee@localhost mnt$ rm -fr /mnt/*
lee@localhost mnt$ find /etc/ -name passwd 2>&1 | tee file | wc -l
lee@localhost mnt$ find /etc/ -name passwd 2>&1 | tee file | wc -l
17
四、用户管理
1、用户存在的意义(3A机制)
3A 机制是用户身份管理的核心逻辑:
- Authentication(认证):验证用户身份(如密码验证);
- Authorization(授权):确定用户可执行的操作(如权限控制);
- Accounting(审计):记录用户的操作行为(如日志审计)。
用户的存在是为了通过 3A 机制实现系统的安全隔离与权责划分
2、用户涉及到的系统配置文件有哪些
/etc/passwd 存储用户的基本信息(用户名、UID、GID、家目录、登录 shell 等),所有用户可读
/etc/group 存储用户组的基本信息(组名、GID、组成员),所有用户可读
/etc/shadow 存储用户的密码(加密后)及密码策略(有效期等),仅 root 可读
/etc/skel/.* #用户配置文件模板,建立用户时会把次目录中的所有文件
复制到新建用户的家目录中
/var/spool/mail/username 存储用户的邮件内容
/home/username 用户的家目录,存放个人文件与配置
3、用户管理
|------------|--------------------------------------------------------------------------------------------|
| 命令 | 常用参数 & 作用 |
| userdel -r | 删除用户并同时删除其家目录(-r是递归删除家目录) |
| useradd | -u指定 UID;-g指定初始组;-G指定附加组;-M不创建家目录;-s指定登录 shell;-c添加用户注释;-d指定家目录 |
| usermod | 用于修改用户信息:-l改用户名;-g改初始组;-G改附加组;-aG追加附加组;-c/-d/-m/-s修改注释 / 家目录 / 移动家目录 / 登录 shell 等 |
| passwd | 管理用户密码:-S查看密码状态;-d删除密码;-e强制用户下次登录改密码;-x设置密码最大有效期;-n设置密码最小有效期;-w设置密码过期警告期;--stdin通过标准输入设置密码 |
| chage | 管理用户密码有效期:-d设置密码最后修改时间;-w设置警告天数;-m设置最小修改间隔;-M设置最大有效期;-E设置账户过期时间;-l列出密码策略 |
userdel -r
useradd -u -g -G -M -s -c -d
usermod -l -g -G -aG -c -d -md -s -U -L
passwd -S -d -e -x -n -w --stdin
chage -d -w -m -M -E -I
4、权力下放
|--------------|---------------------------------------------|
| 工具 / 文件 | 作用 |
| /etc/sudoers | 配置 sudo 权限的文件,不建议直接编辑(无语法检测,错误会导致 sudo 不可用) |
| visudo | 安全编辑/etc/sudoers的工具,会自动检测语法错误 |
| visudo | 普通用户执行该命令,临时以 root 身份运行command |
/etc/sudoers #不建议直接编写,因为没有语法检测
visudo
sudo command
五、Linux系统中的权限管理
1、权限读取
元数据?
文件属性种类?
元数据被记录在磁盘的什么位置
- 元数据:文件的属性信息(如权限、大小、修改时间等),而非文件内容本身;
- 文件属性种类:包括权限(r/w/x)、类型(文件 / 目录 / 链接等)、所有者 / 组等;
- 元数据存储位置:元数据存储在磁盘的 **inode(索引节点)** 中,每个文件对应一个 inode。
2、更改文件所有人所有组
chown 更改文件的所有者(可同时改所属组),如chown user:group file
chgrp 仅更改文件的所属组,如chgrp group file
3、文件普通权限
- 权限类型与数值:权限以 "所有者 - 所属组 - 其他用户" 为维度,每种身份对应 3 种权限:
|------|----|-----------|---------------------|
| 权限符号 | 数值 | 作用(文件) | 作用(目录) |
| r | 4 | 读取文件内容 | 查看目录内的文件列表 |
| w | 2 | 修改文件内容 | 在目录内创建 / 删除 / 重命名文件 |
| x | 1 | 执行文件(如脚本) | 进入目录(cd) |
文件权限的类型
- 0
r 4
w 2
x 1
chmod 用于修改文件权限,支持符号法(如chmod u+r file)和数值法(如chmod 755 file)
4、默认权限
由umask(权限掩码)控制,新建文件 / 目录的默认权限为:
- 目录默认权限:777 - umask;
- 文件默认权限:666 - umask(文件默认无执行权限)。
执行umask命令可查看当前掩码,修改umask 022可调整默认权限。
umask
5、特殊权限
suid 让普通用户执行文件时,以文件所有者的身份运行(如/usr/bin/passwd)
sgid 让普通用户执行文件时,以文件所属组的身份运行;或目录内新建文件继承目录的 所属组
stickybit 目录权限,仅文件所有者或 root 可删除目录内的文件(如/tmp目录默认开启)
6、权限列表ACL
setfac -m -m d -x -b
getfac
|---------|------------------------------------------------------|
| 命令 | 常用参数&作用 |
| setfacl | -m添加 ACL 规则;-x删除 ACL 规则;-b清除所有 ACL 规则;-d设置默认 ACL(目录) |
| getfacl | 查看文件 / 目录的 ACL 规则 |
7、attr
-i 设置文件为不可修改(即使 root 也无法修改 / 删除,需用-i取消);
-a 设置文件为仅追加模式(只能向文件中添加内容,无法修改 / 删除原有内容)。
练习:用户管理及权限练习

1、root@rhce \~# groupadd -g 2000 shengcan
2、root@rhce \~# groupadd -g 2001 caiwu
3、root@rhce \~# groupadd -g 2002 jishu
4、root@rhce \~# useradd -u 2000 -g shengcan -G jishu,caiwu lee
5、root@rhce \~# useradd -r -s /sbin/nologin linux
6、root@rhce \~# useradd -G caiwu westos
7、root@rhce \~# useradd -u 0 -o tabadmin
8、root@rhce \~# echo "westos" | passwd --stdin lee
更改用户 lee 的密码 。
passwd:所有的身份验证令牌已经成功更新。
root@rhce \~# echo "westos" | passwd --stdin linux
更改用户 linux 的密码 。
passwd:所有的身份验证令牌已经成功更新。
root@rhce \~# echo "westos" | passwd --stdin westos
root@rhce \~# echo "westos" | passwd --stdin tabadmin
更改用户 tabadmin 的密码 。
passwd:所有的身份验证令牌已经成功更新。
root@rhce \~# passwd -e lee
正在终止用户 lee 的密码。
passwd: 操作成功
root@rhce \~# passwd -e linux
正在终止用户 linux 的密码。
passwd: 操作成功
root@rhce \~# passwd -e westos
root@rhce \~# passwd -e tabadmin
正在终止用户 tabadmin 的密码。
passwd: 操作成功
root@rhce \~# chage -M 30 lee
root@rhce \~# chage -M 30 linux
root@rhce \~# chage -M 30 linux
root@rhce \~# chage -M 30 westos
root@rhce \~# chage -M 30 tabadmin
###查看用户组
cat /etc/group | grep -E "shengcan|caiwu|jishu"
###查看用户属性
root@rhce \~# id lee;id linux;id westos; id tabadmin
###查看密码有效期
chage -l lee

bashmkdir -p /sc /cw /js /pub chgrp shengchan /sc chgrp caiwu /cw chgrp jishu /js chmod 3770 /sc /js /cw chmod 3777 /pub/ ls -ld /sc /cw /js /pub
六、进程管理
1、什么是进程?什么是线程?
- 进程:是程序在操作系统中的一次运行实例,是系统资源(CPU、内存、文件句柄等)分配的基本单位。每个进程有独立的地址空间,进程间资源不共享。
- 线程:是进程内的执行单元,是 CPU 调度的基本单位。线程共享所属进程的地址空间与资源,仅拥有独立的栈、程序计数器等少量资源,线程间切换开销远小于进程。
2、进程状态
|------|-----------|--------------------------------------------|
| 状态符号 | 状态名称 | 含义 |
| R | 运行态 / 就绪态 | 进程正在 CPU 上运行,或已准备好等待 CPU 调度 |
| S | 可中断睡眠态 | 进程因等待资源(如 I/O、信号)而暂停,可被信号唤醒 |
| D | 不可中断睡眠态 | 进程因等待硬件资源(如磁盘 I/O)而暂停,不能被信号唤醒,强行终止可能导致数据丢失 |
| T | 停止态 | 进程被信号(如Ctrl+Z)暂停,可通过信号恢复运行 |
| Z | 僵尸态 | 进程已终止,但父进程未回收其资源(如进程描述符),需回收父进程或重启系统清理 |
| X | 死亡态 | 进程已彻底终止,仅短暂存在,通常无法观测到 |
3、进程查看命令
|--------|----------------------------------------------------------------------------|
| 命令 | 作用与常用参数 |
| ps | 静态查看进程快照: - ps -ef:显示进程的 UID、PID、PPID 等详细信息; - ps aux:显示进程的 CPU、内存占用率等资源信息 |
| top | 动态实时查看进程资源占用(默认 1 秒刷新一次),支持交互操作(如P按 CPU 排序、M按内存排序、k终止进程) |
| pstree | 以树状结构显示进程间的父子关系,直观展示进程层级 |
| pgrep | 根据进程名、UID 等条件筛选进程 PID,如pgrep vim直接输出 vim 进程的 PID |
| pidof | 根据进程名获取其 PID,如pidof nginx输出所有 nginx 进程的 PID |
ps
pidof #快速查询进程号
root@localhost mnt# vim &
1 27942
root@localhost mnt# pidof vim
27942
1+ 已停止 vim
pgrep
root@localhost mnt]# su - lee
lee@localhost \~$ vim &
1 28012
lee@localhost \~$ vim &
2 28013
1+ 已停止 vim
lee@localhost \~$ vim ^
2+ 已停止 vim
lee@localhost \~$ vim &
3 28015
root@localhost \~# pgrep -lu lee
27979 bash
28012 vim
28013 vim
28015 vim
top
4、进程前后台调用
root@localhost mnt# ping www.baidu.com
PING www.a.shifen.com (183.2.172.177) 56(84) 比特的数据。
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=1 ttl=128 时间=45.9 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=2 ttl=128 时间=53.5 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=3 ttl=128 时间=48.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=4 ttl=128 时间=51.4 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=5 ttl=128 时间=48.9 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=6 ttl=128 时间=41.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=7 ttl=128 时间=44.7 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=8 ttl=128 时间=46.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=9 ttl=128 时间=44.7 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=10 ttl=128 时间=46.2 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=11 ttl=128 时间=46.8 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=12 ttl=128 时间=43.8 毫秒
^Z #ctrl+z 标识把占用终端的进程打入后台停止
1+ 已停止 ping www.baidu.com
root@localhost mnt# ps
PID TTY TIME CMD
1732 pts/0 00:00:00 bash
28027 pts/0 00:00:00 ping
28028 pts/0 00:00:00 ps
root@localhost mnt# jobs
1+ 已停止 ping www.baidu.com
root@localhost mnt]# jobs
1+ 已停止 ping www.baidu.com
root@localhost mnt# fg 1
ping www.baidu.com
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=13 ttl=128 时间=45.2 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=14 ttl=128 时间=48.1 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=15 ttl=128 时间=61.4 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=16 ttl=128 时间=41.8 毫秒
^Z
1+ 已停止 ping www.baidu.com
ost mnt]#
root@localhost mnt# bg 1
1+ ping www.baidu.com &
root@localhost mnt# 64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=17 ttl=128 时间=38.6 毫秒
64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=18 ttl=128 时间=38.2 毫秒
root@localhost mnt# 64 比特,来自 183.2.172.177 (183.2.172.177): icmp_seq=19 ttl=128 时间=37.3 毫秒
root@localhost mnt#
root@localhost mnt#
root@localhost mnt#
root@localhost mnt#
root@localhost mnt#
root@localhost mnt# vim &
5、进程优先级
进程优先级决定了 CPU 调度的优先程度,Linux 中通过nice 值和PRI(优先级) 管理:
- nice 值:范围为-20(最高优先级)~ 19(最低优先级),默认值为 0;普通用户只能调高 nice 值(降低优先级),root 可调整所有范围。
- PRI:由内核根据 nice 值计算得到的实际调度优先级,公式为PRI = PRI_old + (nice_new - nice_old)。
- 调整命令:
- nice -n 5 command:以 nice 值 5 启动进程;
- renice 10 PID:将指定 PID 进程的 nice 值调整为 10。
6、进程信号
信号是操作系统向进程传递的事件通知,用于控制进程行为,常用信号及作用:
|------|---------|--------------------------------------------------|
| 信号编号 | 信号名 | 作用 |
| 1 | SIGHUP | 终端断开时通知进程,常用于让进程重新加载配置(如nginx -s reload本质是发送此信号) |
| 2 | SIGINT | 中断信号,对应Ctrl+C,用于终止进程 |
| 9 | SIGKILL | 强制终止信号,进程无法忽略,用于强制结束无响应进程 |
| 15 | SIGTERM | 终止信号,进程可捕获并优雅退出(默认终止信号) |
| 18 | SIGCONT | 恢复进程(对应 SIGSTOP 的暂停) |
| 19 | SIGSTOP | 暂停进程,进程无法忽略(对应Ctrl+Z) |
- 发送信号命令:kill -信号编号 PID(如kill -9 1234强制终止 PID 为 1234 的进程)。
7、守护进程
守护进程是在后台长期运行的特殊进程,特点:
- 脱离终端(无控制终端),不受终端关闭影响;
- 通常以d为后缀命名(如sshd、crond);
- 由系统启动时自动加载,负责提供系统服务(如网络服务、定时任务);
- 可通过systemctl管理(如systemctl start sshd启动 sshd 守护进程)。
- systemctl
练习:进程项目练习
1、vim有运行,请显示vim的pid
2、使用命令查找出系统中cpu使用量在前5的进程,只显示这些进程的pid


