作业管理(job control)是在bash环境下使用的。
管理作业时,其实每个作业都是当前bash的子程序,也就是说,彼此之间是有关联的,我们无法以作业管理的方式由tty1的环境去管理tty2的bash。
要进行bash的作业管理,必须要注意到的限制有:
- 程序必须是shell的子程序
- 程序不能等待terminal/shell的输入
1. 直接将命令放在后台执行的"&"
前台(foreground): 用户可以控制的作业
后台(background): 在内存中可以自行运行的作业,用户无法进行直接控制,除非以fg/bg等命令将该作业调用出来
语法: command &
2. 将当前作业放到后台"暂停" [Ctrl]+z
范例:
#当前正在使用vi, 却临时需要返回bash
vi ~/.bashrc
按下[Ctrl]+z
[1]+ Stopped
3. 观察当前后台作业状态 jobs
jobs -l
-l 表示除了列出作业号之外,同时列出PID
4. 将后台作业拿到前台处理 fg
fg job-number
5. 将作业置于后台运行
bg job-number
6. 删除进程 kill
-l : 列出当前kill能够使用的signal
-1: 重新读取一次参数的设置文件(类似reload) [SIGHUP]
-2: 等同于[Ctrl]+c [SIGINT]
-9: 强制删除 [SIGKILL]
-15: 以正常的程序方式终止一项进程,区别与-9 [SIGTERM]
参考: 《鸟哥的Linux私房菜》