[Linux] Job管理

当我们在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 %1
tar -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 [命令] &  -- 脱机后台运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值