前台进程和后台进程
当你启动一个进程时(运行一个命令),可以如下两种方式运行该进程:
前台进程
后台进程
默认情况下,你启动的每一个进程都是运行在前台的。它从键盘获取输入并发送它的输出到屏幕。
当一个进程运行在前台时,我们不能在同一命令行提示符下运行任何其他命令(启动任何其他进程),因为在程序结束它的进程之前命令行提示符不可用。
启动一个后台进程最简羊的方法是添加一个控制操作符“&”到命令的结尾。例如,如下命令将启动一个后台进程:
[c.biancheng.net]$ sleep 10 &
[1] 5720
现在 sleep 命令被放在后台运行。当 Bash 在后台启动一个作业时,它会打印一行内容显示作业编号([1])和进程号(PID-5720)。当作业完成时,作业会发送类似如下的信息到终端程序,来显示此作业已完成,其内容类似如下所示:
[1]+ Done sleep 10
将进程放在后台运行的好处是:你可以继续运行其他命令,而不需要等待此进程运行完成再运行其他命令。
进程的状态
每个 Linux 进程都有它自己的生命周期,比如,创建、执行、结束和清除。每个进程也都有各自的状态,显示进程中当前正发生什么。
进程可以有如下几种状态:
D(不可中断休眠状态)——进程正在休眠并且不能恢复,直到一个事件发生为止。
R(运行状态)——进程正在运行。
S(休眠状态)——进程没有在运行,而在等待一个事件或是信号。
T(停止状态)——进程被信号停止,比如,信号 SIGINT 或 SIGSTOP。
Z(僵死状态)——标记为 《defunct》 的进程是僵死的进程,它们之所以残留是因为它们的父进程适当地销毁它们。如果父进程退出,这些进程将被 init 进程销毁。