前一节我们详细讲了何为 Linux 的进程,以及如何查看系统内的进程,还有设定各个进程的优先级(例如 nice 值)。那么,在日常使用 Linux 的时候,你一定会遇到下面的问题:有好几个命令要运行,一个要等待后再写入某个文件,而另一个要进行系统更新。听起来很棘手,是不是?要想解决这样的问题,就要用到我们今天要讲的概念——作业控制 jobs。
作业控制 jobs
作业控制是系统命令行自带的一个功能,可以让某些程序静默运行(不出现在屏幕上)。它的另一个名称,在 Windows 上也十分常见:后台运行。
将进程调到后台
还记得之前我们提到过的这个命令吗?
sleep 3600这个命令的作用是使控制台(终端)休眠 3600s,也就是 1 小时。在这期间,我们可以输入任意内容,但终端不会有任何反应。
因此,一种解决方法是在最后面加上一个 &. 这样可以将该命令转移到后台运行,并且只会在终端返回一个编号和 PID.
查看后台进程
直接使用 jobs 命令即可。例如:

下面是一些参数说明:
[x]:作业编号(Job ID)-/+:-表示前一个作业,+表示当前作业
调动后台程序到前台
fg 命令可以很有效地将某个后台程序调动到前台。它的用法就像这样:
fg
# Process the FIRST job on the list
fg %n
# Process the N-TH job on the list请注意,如果在调动后按下 Ctrl + C,则会立即中断该进程!
消灭(杀死)后台进程
前面讲过,杀死一个进程的方式是先通过 ps aux | grep {ProcessName} 命令找出进程的 PID,再使用 kill -9 {PID} 杀死该进程。
在这里,我们不需要这么麻烦,只需要这个命令:kill %n
这样可以立即杀死后台第 n 个进程(也就是 jobs 列出来的)。
虚拟文件系统 /proc
严格的说,这是一个位于根目录下的文件夹,形式为 /proc. 它记录了这台服务器自身的内核、进程运行的状态信息。

例如,在上面这台服务器中,我们能看到一堆数字命名的文件夹和普通文件。
那它们具体有什么含义呢?普通文件记录的是这台服务器的硬件信息,例如 cpuinfo 和 meminfo;而用数字命名的文件夹指的是进程的 PID,其中每一个文件夹都反映了一个进程。
在一个进程被杀死后,它对应的文件夹也会一并被删除。
这样一来,我们就可以查看服务器的 CPU,内存和内核信息(前提是你看得懂上面的一大堆英语):
# For CPU Information
cat /proc/cpuinfo# For Memory Information
cat /proc/meminfo# For Kernel Information
cat /proc/cmdline
# Or
uname -r
ls /boot你可能需要 sudo 或 root 权限执行上面的命令。
总结
作业控制是 Linux 命令行的一个内置功能,允许用户在后台运行和管理程序(也称为作业),从而实现在单个终端会话中处理多个任务;通过在执行命令后添加 & 符号(如sleep 3600 &)可以将进程调入后台运行,系统会返回作业编号和PID,而使用 jobs 命令可以查看所有后台作业的列表及其状态(如 - 表示前一个作业,+ 表示当前作业)。要将后台作业重新调回前台,可以使用 fg 命令(默认操作第一个作业或指定 fg %n 操作第 n 个作业),此时若按下 Ctrl+C 会中断该进程;要杀死后台进程,无需查找 PID,直接使用 kill %n 即可终止对应作业。此外,虚拟文件系统 /proc 记录了系统内核和进程的实时状态信息,其中数字命名的文件夹对应进程 PID,包含该进程的详细信息,而普通文件(如cpuinfo、meminfo)则存储硬件信息,用户可通过 cat 命令查看。总之,掌握作业控制和 /proc 文件系统有助于更高效地管理Linux系统中的进程和资源。