Linux 进程管理
查看【Linux】专题可浏览更多内容
查看进程
ps
ps
是最常见的用来查看进程的命令
默认不带任何选项参数的 ps
结果显示的内容较少,所以可以搭配一些选项参数
如 x
选项,
ps x
PID TTY STAT TIME COMMAND
594 ? Ss 0:00 /lib/systemd/systemd --user
595 ? S 0:00 (sd-pam)
612 ? R 0:00 sshd: toor@pts/0
613 pts/0 Ss 0:00 -bash
620 pts/0 R+ 0:00 ps x
PID:进程 ID;
TTY:进程的控制终端;
STAT:状态;
TIME:进程消耗的 CPU 时间总和;
COMMAND:启动进程的命令;
其中的 STAT(状态)的含义:
状态 | 含义 |
---|---|
D | 不间断的睡眠(通常是IO) |
I | 闲置的内核线程 |
R | 运行或可运行(在运行队列中) |
S | 可中断的睡眠(等待事件的完成) |
T | 被工作控制信号停止 |
X | 死亡(不应该被看到) |
Z | 失效(「僵尸」)进程,已终止但未被其父进程清理 |
除了 x
选项,还比较常见的是 aux
及 -elf
,注意前者不带连字符 -
# a 显示所有进程
# u 「面向用户」的输出格式
# x 显示没有控制终端的进程
ps aux | less
# 或
# -e 显示所有进程
# -L 长格式
# -f 完整格式
ps -elf | less
两者的作用相当,区别在于前者是以 BSD 风格输出结果,而后者是以 UNIX 风格输出结果
一些比较有用的示例:
# 按 CPU 占用排序
# %前的 - 用于倒序排序
ps aux --sort=-%cpu | less
# 按内存占用排序
ps aux --sort=-%mem | less
# 按用户查找
ps aux -u root
# 查找指定进程,如查找 firefox
ps aux | grep firefox
top
ps
命令的结果都是静态的,如果想要查看进程的实时动态,可以使用 top
命令
top
要从 top
中退出按 Q
键
信号
使用 kill -l
可以查看所有信号
一些常用的信号:
编号 | 名称 | 含义 |
---|---|---|
1 | SIGHUP | 挂起(hang up) |
2 | SIGINT | 中断(interrupt),类似在终端按 Ctrl + C |
9 | SIGKILL | 「杀死」(kill),不会发送给目标进程而逝内核会立即终止进程,应仅在其他终止信号不起作用的情况下作为最后手段 |
15 | SIGTERM | 终止(terminate),kill 命令默认发送的信号 |
18 | SIGCONT | 继续(continue),在 STOP 信号或 TSTP 信号后恢复进程,如 bg 命令与 fg 命令会使用 |
19 | SIGSTOP | 停止(stop),并非终止进程而是暂停,与 KILL 信号一样不会向目标进程发送,所以也不能忽略 |
20 | SIGTSTP | 终端停止(terminal stop),按下 Ctrl + Z 时由终端发送,由进程接受,进程可将其忽略 |
kill
kill -<信号> <PID>
kill -KILL $(pidof firefox)
kill -9 $(pidof firefox)
killall
killall
用于杀死所有同名进程
killall firefox
pkill
如果只知道进程名的一部分,可以使用 pkill
pkill -9 firef
前台与后台进程
&
如果想要将命令置于后台运行,可以在命令后面加上 &
:
firefox &
[1] 607
[1] 表示作业编号,607
为 PID
jobs
可以使用 jobs
命令查看作业:
jobs -l
# 作业编号 PID 运行状态 命令
[1]+ 607 Stopped (tty output) firefox
fg
使进程返回前台可以使用 fg
命令:
# % 后加上作业编号
fg %1
在一个命令进行的中途可以临时暂停进程并用作业管理
例如正在复制一个大型文件,但现在有其他任务要进行处理:
cp DVD.iso ./Downloads/DVD.iso
bg
可以按下 Ctrl
+ Z
并看到作业编号
[1] + 29734 suspended cp 10.iso
,待忙完其他事情后再用 fg
命令调回继续完成,还可以使用 bg
命令将其放在后台完成,和 fg
使用方法类似:
bg %1
关闭或重启系统
halt
halt
命令不带选项参数的情况下默认关闭系统但不关闭电源
sudo halt
poweroff
poweroff
命令用于关闭系统及电源
sudo poweroff
reboot
reboot
命令用于重启系统
sudo reboot
shutdown
shutdown
命令对于挂起、关机和重启提供了更多操作空间:
# 立即挂起
sudo shutdown -H now # 相当于 halt
# 立即关机
sudo shutdown -h now # 相当于 poweroff
# 立即重启
sudo shutdown -r now
# 定时关机
sudo shutdown -h +5 # 5分钟后关机
sudo shutown -h 21:00 # 设定时间在 21:00 关机
# 取消定时操作
sudo shutdown -c