[Linux] Job管理

来源:互联网 发布:机房网络交换机柜回收 编辑:程序博客网 时间:2024/06/17 00:38

当我们在Linux Bash下执行命令(如tar),默认都是在前台进行的,即我们必须得等到命令结束之后才能执行后续的命令。事实上,我们是可以控制命令在后台执行,这就是Linux的Job管理。


& - 把命令丢到后台执行

在执行命令的最后加上&,就表示把该命令丢到后台执行,如下所示:

# tar -zcvf source.tar.gz ./source > /tmp/source_tar.log 2>&1 &[1] 10015
注意1:虽然我们把job放到后台了,到它的标准输出和标准错误输出还是依然会干扰到前台,所以一般情况行,对于后台的job,都采用输出重定向,把输出信息写到文件里,已免干扰到前台的工作。

注意2:当把命令丢到后台后,屏幕将显示一行信息(如上所示的第2行),第1列代表job number,第2列代表PID。


[ctrl]-z - 将目前工作丢到后台,并暂停

假设我正在执行一条压缩命令,这条命令需要很长时间,如下所示:
[root@lx15 /opt ]# tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1 
这时如果我按下[ctrl] - z,将会把该工作丢到后台去,并暂停,如下所示:
[1]+  Stopped                 tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1

jobs - 查看当前后台工作状态

jobs [-lrs]-l:列出job的详细信息-r:仅列出状态为run的job-s:仅列出状态为stop的job[root@lx15 /opt ]# jobs -l[1]+ 10647 Stopped                 tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1


fg - 将后台工作放到前台

fg %jobnumber# fg %1tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1

bg - 改变后台工作为running

[root@lx15 /opt ]# jobs[1]+  Stopped                 tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1[root@lx15 /opt ]# bg %1[1]+ tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1 &[root@lx15 /opt ]# jobs[1]+  Running                 tar -zcvf oracle.tar.gz ./oracle > /tmp/oracle_tar.log 2>&1 &

nohup - 脱机运行

从上面我们可以知道,在命令的后面加上&可以让它在后台运行,但一旦你退出或注销了终端(exit),该命令将终止。如果你想要你的命令在退出或注销后还能运行,则必须得在命令的前面加上nohup才行。
nohup [命令]    -- 脱机前台运行
nohup [命令] &  -- 脱机后台运行

2 0
原创粉丝点击