job control 1.png
注意一下上面打印信息,[1]表示job number(任务编号),7089表示PID(进程号)。在后台执行的命令,如果有stdout和stderr,数据依旧输出到屏幕上,可以通过数据重定向传输到文件中,就不会影响前台的工作。
job control 2.png
2. 将任务丢到后台暂停:ctrl-z在shell中执行find / -print命令,然后按下ctrl-z将任务丢到后台暂停:
job control 3.png
由上面打印可知,任务find / -print暂停执行,并将任务放在后台,返回一个job number[2]
输入jobs -l 查看后台所有的任务状态:
job control 4.png
仔细查看打印信息,有没有留意到在PID 7417和7431之前有-和+两个符号,-表示最近第二个被放到后台的任务号码,+表示最近被放到后台的任务号码。
输入fg会默认取出+的任务,然后迅速按下ctrl-z
job control 5.png
看上面打印的PID是7431,确实如此。再次输入jobs -l来查看后台所有任务的信息
job control 6.png
这次输入fg %1来讲后台的任务拿到前台处理。
输入jobs -l查看任务状态:
job control 7.png
然后输入bg %2; jobs -l将后台任务变成运行,并查看任务状态,然后不断地输入打印信息,这时需要关闭终端才能kill这个shell进程的子进程。
有时,任务在后台运行或暂停,这时我想结束这个任务,怎样办呢?你可以使用kill命令将任务结束。
输入find / -print命令,并按下ctrl-z暂停任务:
job control 8.png
输入kill -9 %1;jobs -l结束任务并显示任务状态:
job control 9.png
shell script
shell script是利用shell的功能所编写的一个程序,这个程序使用纯文本文件来保存一些shell的命令,并遵循shell的语法规则,搭配数据重定向、管道、和正则表达式等功能来组合各种工具,实现简单重复任务的自动化。
通配符