工作管理:jobs,kill,fg,bg,nohup
一、直接将命令丢到后台中“执行”:&
#tar -zpcf /tmp/etc.tar.gz /etc &
但是如果这样,当出现stdout、stderr或别的数据时会直接在屏幕上显示出来,影响前台工作,此时可以这样:
#tar -zpcf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
二、将目前的工作丢到后台中“暂停”:[ctrl]-z
三、查看目前的后台工作状态:jobs
#jobs [-lrs]
-l:除了列出job number与命令串之外,同时列出PID号码;
-r:仅列出正在后台运行的工作;
-s:仅列出正在后台暂停的工作。
四、将后台工作拿到前台来处理:fg
#fg %jobnumber
#fg ==>默认取出那个 + 的工作
+ 指的是最后一个呗放进后台的工作,处理的时候,如果不加号码,默认就取出这个来执行。
五、让在后台处于暂停状态的工作开始运行:bg
#bg %number
管理后台当中的工作:kill
#kill -signal %jobnumber ==>默认使用的是PID,所以要加上 %,才能用前面的号码 。
#kill -l
-l:列出目前kill能够使用的信号有哪些。
signal:代表给予后面接的那个工作什么样的指示,用 man 7 signal 可知:
-1:重新读取一次参数的配置文件
-2:代表与由键盘输入[ctrl]-c同样的操作
-9:立刻强制删除一个工作
-15:与正常的程序方式终止一个工作,与-9不一样
脱机管理:nohup
nohup可以让你在脱机或者注销系统后,还能够让工作继续进行。
#nohup [命令与参数] ==>在终端机前台中工作
#nohup [命令与参数] & ==>在终端机后台中工作
注意,nohup不支持bash内置的命令。
例子:编辑一个睡着 500s 的程序
#vim sleep500.sh
#!/bin/bash
/bin/sleep 500s
/bin/echo "I have slept 500 seconds."
丢到后台中去执行,并立刻注销系统:
#chmod a+x sleep500.sh
#nohup ./sleep500.sh &
#exit
退出再登陆后,当你使用 ps -l 去查看你的进程,你会发现sleep500.sh还在运行。
阅读(584) | 评论(0) | 转发(0) |