在Shell脚本编程或命令行交互中,作业控制是指用户管理和监控正在运行的进程(后台任务或前台任务)的能力。Shell通过一系列内置命令提供了作业控制功能,主要包括以下几个方面:
后台运行进程:
在命令后面加上"&"符号可以让命令在后台运行, Shell会立即返回提示符,而不是等待命令执行完毕。例如:sleep 1000 & # 这个命令将在后台运行1000秒
查看后台作业:
使用jobs
命令可以列出当前终端下的所有后台作业及其状态。jobs
将前台作业暂停/继续:
按下Ctrl+Z
可以将当前正在前台运行的进程挂起到后台,并且显示一个作业号。之后,你可以使用bg %jobnumber
命令将挂起的作业放到后台继续运行,或使用fg %jobnumber
命令将其恢复到前台运行。终止后台作业:
可以使用kill %jobnumber
命令来终止后台作业,其中jobnumber
是通过jobs
命令获取到的作业编号。作业与进程组:
Shell中的作业实际上是进程组的概念,每个作业包含一组相关的进程,通过进程组ID(PGID)进行管理。
总的来说,Shell的作业控制功能大大增强了用户对多任务操作系统的控制能力,使得在同一终端窗口中可以并发执行多个命令或程序,并能够灵活地切换和管理这些进程。