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


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

    01 前台转到后台
    1. 1. 输入ctrl + z 将该前台任务挂起
    2. ^Z
    3. [1]+ Stopped XXXXXXXX
    4. 2. 运行jobs命令,查看任务号(可以看到run.sh对应的任务号是1)
    5. jobs -l #-l显示pid
    6. [1] + suspended XXXX
    7. 3. 运行bg命令,将任务从前台转到后台,这里的任务就是1,
    8. bg %1
    9. 4.jobs检查
    10. jobs -l #-l显示pid
    11. [1]+ Running XXXX
    02 后台转到前台
    1. 1. 查看后台任务(同一终端)
    2. jobs
    3. [1] + running XXXXXXX
    4. 2. 运行fg命令,将任务从后台转到前台
    5. fg %1
    6. [1] + XXXXXX

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

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

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

    是否可行?可

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

    1. 为了确保程序即使在终端断开链接后仍然可以在后台运行,需要用到 nohup 或者 disown 命令:
    2. # 常见的 nohup 命令
    3. nohup bash running.sh > file.out 2>&1 &
    4. # 或者使用 disown -h 命令
    5. bash running.sh > file.out 2>&1 & disown -h
    6. 但是确实不如screen啊!
    最佳解决策略
    1. 等
    2. 进入screen吧,下次长记性!

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

    1. 如何将进程移到screen?
    2. 1. Ctrl+Z进程
    3. 2. bg恢复进程在后台运行
    4. 3. 解除从属关系disown %1
    5. 启动一个screen -S or -r
    6. 查找进程PID jobs -l可查询
    7. yum -y install reptyr
    8. 执行reptyr -T 132385 将进程移到该screen

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

    3 解除从属关系!

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

    1. 使用 disown %1从shell中夺走所有权
    2. disown %1
    3. #不影响退出终端,亲测有效

    使用`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有效

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

  • 相关阅读:
    【面试补漏】vue.$nextTick的原理
    Java常用类(一)
    见过仙女蹦迪吗?一起用python做个小仙女代码蹦迪视频
    安装虚拟机及centos7
    【网络安全 --- xss-labs靶场通关(11-20关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻
    腾讯云服务器新用户购买优惠多少钱?腾讯云新用户购买优惠
    MySQL 约束与复杂查询
    RK3128适配RTL8723DU
    Centos磁盘爆满_openEuler系统磁盘爆满清理方法---Linux工作笔记060
    vuejs实现点击导出按钮把数据加密后传到json/txt格式文件中并下载,以及上传json文件解密获得json内容
  • 原文地址:https://blog.csdn.net/weixin_44874487/article/details/137435915