linux后台运行及任务挂后台-linux亲测有效操作001

由于命令行耗时太久,突然想把进程挂后台走人怎么办?

01 前台转到后台
1. 输入ctrl + z 将该前台任务挂起

^Z
[1]+  Stopped XXXXXXXX

2. 运行jobs命令,查看任务号(可以看到run.sh对应的任务号是1)

jobs -l  #-l显示pid                                                                                                 
[1]  + suspended  XXXX

3. 运行bg命令,将任务从前台转到后台,这里的任务就是1,
bg %1

4.jobs检查
jobs -l  #-l显示pid  
[1]+  Running    XXXX
02 后台转到前台
1. 查看后台任务(同一终端)

jobs
[1]  + running   XXXXXXX

2. 运行fg命令,将任务从后台转到前台

fg %1                    
[1]  + XXXXXX

重点是忘记Screen了,成本巨高,那就挂着开着吧,也没有nohup,这时候就要Ctrl+Z了。

仅在当前终端有效!其他的终端无法显示!

小结:通过 jobs 命令查看工作ID,使用 bg 命令可以把前台程序放入后台,使用 fg 命令可以把后台程序拉到前台,jobs、bg、fg 的配合使用能有效管理前后台任务。

是否可行?可

让程序无视 SIGHUP 信号的命令 nohup 与 disown

为了确保程序即使在终端断开链接后仍然可以在后台运行,需要用到 nohup 或者 disown 命令:

# 常见的 nohup 命令
nohup bash running.sh > file.out 2>&1 &

# 或者使用 disown -h 命令
bash running.sh > file.out 2>&1 & disown -h

但是确实不如screen啊!
最佳解决策略
1. 等
2. 进入screen吧,下次长记性!

幸好,我们可以转入screen,开心嘛?!

如何将进程移到screen?

1. Ctrl+Z进程

2. bg恢复进程在后台运行

3. 解除从属关系disown %1

启动一个screen   -S or -r

查找进程PID  jobs -l可查询

yum -y install reptyr

执行reptyr -T 132385 将进程移到该screen

但是,我们转到后台运行不影响当前终端退出,是可行的!

3 解除从属关系!

使用disown命令。如果你已经使用bg将一个任务放到后台,你可以使用disown命令来移除这个任务与当前终端的关联。这样,当你退出终端时,任务不会收到SIGHUP信号。在使用bg后,你可以简单地输入disown命令。解除从属关系disown %1即可。

使用 disown %1从shell中夺走所有权

disown %1
#不影响退出终端,亲测有效

使用`disown %1`从shell中夺走作业的所有权意味着,即使你退出shell,该作业也不会因为收到`SIGHUP`信号而被停止。然而,这个操作并不影响程序的正常执行逻辑。程序如果达到了它的自然结束点或遇到了使其停止的条件,它仍然会停止运行。

换句话说,`disown`命令只影响程序与终端会话之间的关系,防止终端关闭时向程序发送`SIGHUP`信号。它不会改变程序内部的逻辑。如果程序完成了它的任务,它就会像平时一样结束,无论它是否被`disown`。

所以说,没有screen也没关系呀!

总结

命令用法说明
jobsjobs -l查看任务详情pid等
bgbg %工作ID将工作ID任务调入后台运行
fgfg %工作ID将工作ID任务调入前台运行
killkill -n [ PID | %工作ID ]向任务发送信号
&command-line &将任务立即放入后台运行
nohupnohup command-line忽视 SIGHUP 信号
disowncommand-line disown -h
or
disown %1

忽视 SIGHUP 信号

亲测disown %1有效

哈,可以下班了!下班啦!

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值