作业控制


title: 作业控制
date: 2019/12/6 17:23:23
toc: true

作业控制

什么是作业

这里的作业,原文就是job,什么是作业? https://blog.csdn.net/weixin_42082222/article/details/81394561

mark

查看作业

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

将作业切换到后台

  1. 直接使用&
  2. 先使用ctrl+z暂停,再使用bg %xxx,将一个在后台暂停的命令,变成继续执行

切换到前台

  1. 使用fg %xx作业号

ctrl+D

文件结束符

后台作业的输入输出

输入: 当尝试读取的时候,比如cat,shell会检测到发送sigttint信号,停止作业

输出: 可以说使用stty tostop禁止输出,然后发送SIGTTOU给作业阻塞,直到使用fg恢复到前台

原文地址:https://www.cnblogs.com/zongzi10010/p/11996715.html