作业控制
作业控制
什么是作业
这里的作业,原文就是job,什么是作业? https://blog.csdn.net/weixin_42082222/article/details/81394561
查看作业
jobs命令显示作业时,会看见带加号的作业会被当作默认的作业,带减号的作业是后面要执行的作业,如何多个作业一般只有一个加号和一个减号,默认作业执行加号后再执行减号的作业
jobs
reallin@ubuntu:~$ cat > aa &
[1] 37198
reallin@ubuntu:~$ jobs
[1]+ Stopped cat > aa
reallin@ubuntu:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=2.57 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=12.3 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=2.72 ms
^Z
[2]+ Stopped ping 192.168.0.1
reallin@ubuntu:~$
reallin@ubuntu:~$ ps
PID TTY TIME CMD
36342 pts/1 00:00:00 bash
37198 pts/1 00:00:00 cat
37199 pts/1 00:00:00 ping
37204 pts/1 00:00:00 ps
reallin@ubuntu:~$ jobs
[1]- Stopped cat > aa
[2]+ Stopped ping 192.168.0.1
查看进程id
jobs -l
将作业切换到后台
- 直接使用
&
- 先使用
ctrl+z
暂停,再使用bg %xxx
,将一个在后台暂停的命令,变成继续执行
切换到前台
- 使用
fg %xx
作业号
ctrl+D
文件结束符
后台作业的输入输出
输入: 当尝试读取的时候,比如cat,shell会检测到发送sigttint信号,停止作业
输出: 可以说使用stty tostop
禁止输出,然后发送SIGTTOU
给作业阻塞,直到使用fg
恢复到前台