Ict-innovation/LPI/103.5
考生应能够执行基本的进程管理。
关键知识领域
- 在前景和后台运行作业。
- 向程序发送信号,使其在注销后继续运行。
- 监控活动进程。
- 选择和排序要显示的进程。
- 向进程发送信号。
当 shell 运行命令时,它通常会等待,并且在该命令完成之前不会提示进一步的输入。据说该命令在前景中运行。
当程序在前景中运行时,可以恢复 shell 提示符,但只能通过暂时中断程序。中断信号是 Ctrl Z。
从 shell 启动的进程也称为作业。作业收到^Z信号后,它将被停止,并且 shell 提示符将被恢复。要将程序在后台重新启动,只需键入:bg。
示例
$ xclock xclock 在前景中运行,shell 提示符丢失 [1]+ Stopped xclock xclock 收到 ^Z 信号 $ bg shell 提示符恢复,发出 bg 命令 [1]+ xclock & xclock 在后台运行 |
请注意上面的 [1]+ 符号。整数是进程的作业号,可以将其作为引用。
'+' 符号表示最后修改的进程。'-' 符号表示倒数第二个修改的进程。可以通过在命令末尾添加&将进程在后台启动。
$ xclock& [1] 6213 |
这里报告的数字是作业号(方括号内)和进程 ID。
列出作业
jobs 实用程序列出从当前 shell 启动的所有正在运行的进程。将列出作业号、作业的状态(正在运行/已停止)以及最后修改的两个进程。
[1]- Stopped xclock [2] Running xman & [3]+ Stopped xload |
作业号
可以使用作业号方便地停止和启动一组作业。这是通过fg命令实现的。
fg 2 or fg %2 or fg %?xma ! kill –9 %1
使用 nohup 避免 HUP
有一个名为nohup的程序,它充当与用户会话无关的父进程。当用户注销时,系统会向该进程组拥有的所有进程发送 HUP 信号。例如,要避免此 HUP 信号,应像这样启动名为bigbang的脚本,该脚本尝试计算宇宙的年龄
$ nohup bigbang & |
进程具有唯一的进程 ID,即 PID。此数字可用于修改进程的优先级或停止它。进程是任何正在运行的可执行文件。如果 process_2 由 process_1 生成,则称为子进程。生成 process_1 的过程称为父进程。
pstree 命令很好地说明了父进程和子进程层次结构。
bash(1046)---xinit(1085)-+-X(1086) | `-xfwm(1094)-+-xfce(1100)---xterm(1111)---bash(1113)-+-pstree(1180) | -soffice.bin(1139)---soffice.bin(1152)-+ -soffice.bin(1153) |
|-soffice.bin(1154) | |-soffice.bin(1155) | |-soffice.bin(1156) | `-soffice.bin(1157) | `-xclock(1138) |
---|---|---|---|---|---|---|---|
`-xscreensaver(1098) |
在上图中,显示了所有进程的 PID;这些 PID 显然是递增的。最常用的选项是-p以显示 PID,以及-h以仅突出显示用户的进程。
确定哪些进程正在运行的更直接方法是使用 ps。大多数用户学习了适合大多数情况的选项组合。
以下列出了三个这样的选项
ps ux 用户运行的所有进程
ps T用户在当前终端下运行的进程
ps aux系统上的所有进程
建议您阅读ps 手册页并选择最适合您的选项!
用法:ps -[Unix98 选项] ps [BSD 样式选项] ps --[GNU 样式长选项] ps --help 以获取命令摘要 |
-a 显示当前用户链接到 tty 的所有进程(除了会话领导者) -e 或 -A 显示所有进程 -f 给出 PPID(父进程 ID)和 STIME(开始时间) -l 类似于-f 并显示长列表 a 显示链接到 tty 的所有进程,包括其他用户 x 也显示没有控制 tty 的所有进程 |
kill 命令可用于向进程发送信号。共有 63 个信号可用。默认信号终止进程,称为 SIGTERM,值为 15。
kill
语法
kill SIGNAL process_PID
除非您是 root 用户,否则您只能向自己拥有的进程发送信号。
除了由内核处理的 SIGKILL 外,每个进程都可以选择是否捕获信号。大多数守护进程使用 SIGHUP 表示“重新读取配置文件”。
1 或 SIGHUP 挂断或断开进程连接 2 或 SIGINT 与 Ctrl+C 中断相同 3 或 SIGQUIT 退出 9 或 SIGKILL 通过内核调用杀死进程 15 或 SIGTERM '正常' 终止进程。这是 DEFAULT 信号。 |
也可以在不知道进程 PID 的情况下使用killall停止进程。
killall
语法
killall SIGNAL process_NAME |
---|
使用过的文件、术语和实用程序:* &
- bg
- fg
- jobs
- kill
- nohup
- ps
- top
- free
- uptime
- killall