Appearance
第11章:进程管理
11.1 什么是进程?查看进程
进程的概念
- 进程:正在运行的程序实例
- PID:进程ID,每个进程的唯一标识符
- 父进程:创建其他进程的进程
- 子进程:由其他进程创建的进程
ps命令
- 功能:查看当前系统的进程状态
- 常用选项:
-e:显示所有进程-f:显示完整格式的进程信息-l:显示详细格式的进程信息-aux:显示所有用户的所有进程,包含CPU和内存使用情况
- 示例:bash
$ ps # 查看当前终端的进程 $ ps -ef # 查看所有进程的完整信息 $ ps aux # 查看所有进程的详细信息
top命令
- 功能:实时显示进程状态和系统资源使用情况
- 常用选项:
-d:指定刷新间隔-p:查看指定PID的进程
- 操作:
- 按
q退出 - 按
k终止进程 - 按
s更改刷新间隔 - 按
P按CPU使用率排序 - 按
M按内存使用率排序
- 按
- 示例:bash
$ top # 实时查看进程 $ top -d 2 # 每2秒刷新一次
htop命令
- 功能:top的增强版,提供更友好的界面
- 操作:
- 按
F1查看帮助 - 按
F9终止进程 - 按
q退出
- 按
- 示例:bash
$ htop # 启动htop
11.2 终止进程
kill命令
- 功能:向进程发送信号
- 常用信号:
1(SIGHUP):重新加载配置9(SIGKILL):强制终止进程15(SIGTERM):正常终止进程(默认)
- 格式:
kill [信号] PID - 示例:bash
$ kill 1234 # 发送SIGTERM信号 $ kill -9 1234 # 强制终止进程 $ kill -1 1234 # 重新加载配置
pkill命令
- 功能:根据进程名终止进程
- 格式:
pkill [选项] 进程名 - 示例:bash
$ pkill firefox # 终止所有firefox进程 $ pkill -9 firefox # 强制终止所有firefox进程
killall命令
- 功能:根据进程名终止进程(与pkill类似)
- 示例:bash
$ killall firefox # 终止所有firefox进程
11.3 进程后台运行
& 符号
- 功能:将命令放入后台运行
- 格式:
命令 & - 示例:bash
$ firefox & # 在后台运行firefox
nohup命令
- 功能:使进程在后台运行,即使终端关闭也能继续运行
- 格式:
nohup 命令 & - 示例:bash
$ nohup ./script.sh & # 后台运行脚本,输出重定向到nohup.out
jobs命令
- 功能:查看当前终端的后台进程
- 示例:bash
$ jobs # 查看后台进程
fg命令
- 功能:将后台进程调回前台
- 格式:
fg [job编号] - 示例:bash
$ fg 1 # 将编号为1的后台进程调回前台
bg命令
- 功能:将前台进程放入后台
- 格式:
bg [job编号] - 示例:bash
$ bg 1 # 将编号为1的进程放入后台
11.4 查看进程资源占用
top命令
- 功能:实时查看进程的CPU和内存使用情况
- 示例:bash
$ top # 实时查看资源占用
ps命令
- 功能:查看进程的资源占用情况
- 示例:bash
$ ps aux --sort=-%cpu # 按CPU使用率排序 $ ps aux --sort=-%mem # 按内存使用率排序
pidstat命令
- 功能:查看进程的详细资源使用情况
- 示例:bash
$ pidstat 1 # 每1秒显示一次进程资源使用情况
11.5 实战:终止异常进程、后台运行程序
终止异常进程
查看占用CPU或内存过高的进程:
bash$ top找到异常进程的PID
终止进程:
bash$ kill -9 PID验证进程是否已终止:
bash$ ps aux | grep PID
后台运行程序
后台运行长时间执行的命令:
bash$ nohup wget https://example.com/large-file.zip &查看后台进程:
bash$ jobs查看后台进程的输出:
bash$ tail -f nohup.out将后台进程调回前台:
bash$ fg再次将进程放入后台:
bash$ Ctrl + Z # 暂停进程 $ bg # 将进程放入后台
实战练习:进程管理
查看当前系统的进程:
bash$ ps aux实时查看进程状态:
bash$ top后台运行一个命令:
bash$ sleep 300 &查看后台进程:
bash$ jobs终止后台进程:
bash$ kill %1 # 终止第一个后台进程查看进程树:
bash$ pstree后台运行一个脚本并使其在终端关闭后继续运行:
bash$ nohup bash -c 'for i in {1..10}; do echo $i; sleep 1; done' &查看nohup输出:
bash$ cat nohup.out
通过学习进程管理,你将能够监控和控制系统中的进程,确保系统资源的合理使用,及时终止异常进程,保证系统的稳定运行。
