1.进程ID和作业编号
当通过附加&号后运行命令时,shell会响应如下:
$ ls &
[1] 3318
[1] 3318
其中[1]是作业号,3318是进程号。
一个后台进程完成时,shell会给出作业编号信息,如下:
[1]+ Done ls --color=auto
如果作业以非0状态退出时,shell指出其退出状态。
2.作业控制
作业编号可以使它们在shell命令中进行作业控制。一旦作业在后台运行,你可以让它一直运行,或把它放到前台,或向其发送信号。
2.1.前台和后台
内置fg命令将后台作业放到前台。使用不带参数的fg,shell会把后台作业放到前台,如果有多个作业在后台,shell会挑出最新在后台
运行作业放到前台。如果想要将其他作业放到前台,需要给出前面加上百分号%的作业命令,或者使用作业编号前面加百分号%,也
可以是不带百分号的进程ID。可以使用命令jobs列出后台作业。
例如:
yanwenjie@ywjpc:~/ctest$ ./a &
[1] 3481
yanwenjie@ywjpc:~/ctest$ ./b &
[2] 3482
yanwenjie@ywjpc:~/ctest$ ./c &
[3] 3483
yanwenjie@ywjpc:~/ctest$ jobs
[1] Running ./a &
[2]- Running ./b &
[3]+ Running ./c &
[1] 3481
yanwenjie@ywjpc:~/ctest$ ./b &
[2] 3482
yanwenjie@ywjpc:~/ctest$ ./c &
[3] 3483
yanwenjie@ywjpc:~/ctest$ jobs
[1] Running ./a &
[2]- Running ./b &
[3]+ Running ./c &
-p选项只列出进程号:
$ jobs -p
3481
3482
3483
$ jobs -p
3481
3482
3483
如果键入fg,会把c放到前台,因为它是最新在后台运行的作业。
如果键入fg %b,或者fg %2,b会进入前台。
还可以通过%+引用被放到后台的最新作业,通过%-