跳转到内容

Ict-innovation/LPI/103.5

来自维基教科书,开放世界中的开放书籍

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 启动的所有正在运行的进程。将列出作业号、作业的状态(正在运行/已停止)以及最后修改的两个进程。

jobs 的输出
[1]- Stopped xclock

[2] Running xman &

[3]+ Stopped xload


作业号

可以使用作业号方便地停止和启动一组作业。这是通过fg命令实现的。

将作业 2 调用到前台并杀死作业 1
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 命令很好地说明了进程和进程层次结构。

图 103.5.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 适应 UNIX 样式和 BSD 样式参数
用法: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


上一章 | 下一章

华夏公益教科书