作业控制
Bash可以选择在后台或前台运行作业。一个正在运行的程序称为进程或者作业,每个进程有一个进程号,PID。一般情况下运行的程序都是在前台运行的,可 以通过Ctrl+D组合键来发送信号暂停它。暂停的进程可以在后台运行也可以把它送回前台运行,当然也可以终止它。
[root@localhost ~]# vi #打开vi编辑器,并按Ctrl+z暂停它 [1]+ Stopped vi [root@localhost ~]# sleep 400& #加&,表示在后台运行 [2] 5277 [root@localhost ~]# jobs #显示当前在后台的作业 [1]+ Stopped vi [2]- Running sleep 400 & [root@localhost ~]# jobs -l #显示当前在后台的作业和PID [1]+ 5276 Stopped vi [2]- 5277 Running sleep 400 & [root@localhost ~]# jobs %% #显示最近加入作业表中的命令 [1]+ Stopped vi [root@localhost ~]# fg %1 #fg把作业号为1的作业调到前台来 [root@localhost ~]# kill %1 #把作业号为1的作业杀死 Vim: Caught deadly signal TERM Vim: Finished. |
作业控制命令
命令 | 含义 |
bg | 启动被终止的后台作业 |
fg | 将后台作业调到前台来 |
jobs | 列出所有正在运行的作业 |
kill | 向指定作业发送kill信号 |
stop | 挂起一个后台作业 |
stty tostop | 当一个后台作业向终端发送输出时就挂起它 |
wait[n] | 等待一个指定的作业并返回它的退出状态,这里n是一个PID或作业号 |
∧Z(Ctrl-Z) | 终止(挂起)作业。屏幕上将出现提示符 |
| |
jobs命令的参数 | 含义 |
%n | 作业号n |
%string | 以string开头的作业名 |
%?string | 作业名包含string |
%% | 当前作业 |
%+ | 当前作业 |
%- | 当前作业前的一个作业 |
-r | 列出所有运行的作业 |
-s | 列出所有挂起的作业 |