Linux的后台运行、关闭、查看后台任务
- &
- ctrl+z
- jobs
- fg
- bg
- kill
- nohup
- setsid
- disown
- screen
1.&
加在命令的最后,可以把命令放到后台执行:
watch -n 10 sh test.sh #每10s后台执行一次test.sh脚本
2.ctrl+z
可以将一个在前台运行的命令放到后台,且处于暂停状态
3.jobs
查看当前有所少在后台运行的命令
jobs -l选项可显示所有任务的PID,jobs的状态可以是running、stopped、terminated。
但是如果任务被终止了(kill),shell从当前的shell环境已知的列表中删除任务的进程标识
jobs命令选项
-l 列出进程ID及其他信息
-p 仅列出进程ID
-n 仅列出自从上次输出状态变化提示后的发生了状态变化的进程
-r 仅显示运行中的作业
-s 仅显示停止的作业
-x 运行命令及其参数,并用新的命令的进程ID替代所匹配的原有作业的进程组ID
4.fg
将后台中命令调至前台继续运行,如果后台有多个命令,可以用fg %jobnumber(是命令编号,不是进程号)将选中的命令调出
# jobs -l
[2] - stopped ....
[3] + stopped ...
# fg 2
5.bg
将一个后台暂停的命令,变成后台继续运行,如果后台有多个命令,可以用bg %jobnumber将选中的命令调出
6.kill
- 1.通过jobs命令查看job号,然后执行kill %num
- 2.通过ps命令查看job的进程号(pID),然后执行kill pid,前台进程的终止ctrl+c
7.nohup
若始终让进程在后台运行,即使关闭当前的终端也执行(&是做不到的),这是需要使用nohup
此命令可以让退出账户/关闭终端之后继续运行相应的进程。
nohup ping wwww.baidu.com
8.setsid
nohup通过忽略HUO信号来使进程中途被中断,但如果我们换个角度思考,若进程不属于接受HUP信号的终端的子进程,setsid就可以说实现
# setsid ping www.baidu.com
9.disown
在不停止进程的情况下使提交的命令避免HUP信号的影响
disown -h jobspec 来使某个作业忽略HUP信号
disown -ah 来使所有的作业都忽略HUP信号
disown -rh 来使正在运行的作业忽略HUP信号
注:当使用disown之后,会把目标作业从作业列表中移除,不能再使用jobs查看,但是还可以通过ps -aux查看
10.screen
screen提供了ANSI/VT100的终端模拟器,能够在一个真实终端下运行多个全屏的伪终端。screen的参数很多,具有很强大的功能
```
screen option