• linux后台运行命令总结


    linux后台运行命令总结

    问题:

    我们有时候需要登录远程服务器跑运行时间非常长的脚本,这个时候你要让脚本后台运行,不然占着终端窗口看着不舒服。但万一网络不好,(比如我这儿的破校园网,高峰时几秒钟断一次),终端突然和服务器之间的连接断了,那脚本就会自动停了(因为运行test.sh进程的父进程就是当前的shell终端进程,关闭当前shell终端时,父进程退出,会发送hangup信号给所有子进程,子进程收到hangup以后也会退出)。

    解决思路:1. 实现脚本的后台运行

                   2.忽略hangup信号,使得终端关闭时,脚本仍在继续运行。
    
    • 1

    实现脚本后台运行很简单

    最简单的后台运行是:&,你可以在命令结束后加一个&,以表示该命令在后台运行而不会占用你的命令窗口:

    接下来就是实现忽略hangup 信号

    nohup命令:
    nohup 是 no hungup的缩写,以为“不挂断”,我们在使用Xshell等工具执行Linux脚本时,有时候会由于网络问题,导致失去连接,终端断开,程序运行一半就意外结束了。这种时候,就可以用nohup指令来运行指令,使程序可以忽略挂起信号继续运行。

    nohup和&的区别
    &:是指在后台运行,当用户退出(挂起)的时候,命令自动跟着结束

    nohup:不挂断的运行,注意并没有后台运行的功能,就是指用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,例如我们断开SSH连接都不会影响他的运行,注意了nohup没有后台运行的意思;&才是后台运行

    因此将nohup和&结合使用,就可以实现使命令永久地在后台执行的功能

    在当前shell窗口下使用后台运行命令后可以使用命令 :jobs 来显示当前的后台运行进程。(下面的操作局限于当前窗口的后台)

    输出重定向
    作业在后台运行的时候,可以把输出重定向到某个文件中,相当于一个日志文件,记录运行过程中的输出。使用方法:

    command>out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。

    在上面的例子中,0 – stdin (standard input),1 – stdout (standard output),2 – stderr (standard error) ;

    2>&1 是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到out.file文件中。

    在这里插入图片描述
    这些信号中只有第 9 种信号(SIGKILL)才可以无条件的终止进程,其他信号进程都有权利忽略。并且这么多的信号中常用的也不多,下面我们解释几个常用信号的含义。

    代号 名称 内容
    1 SIGHUP 启动被终止的程序,可让该进程重新读取自己的配置文件,类似重新启动。
    2 SIGINT 相当于用键盘输入 [ctrl]-c 来中断一个程序的进行。
    9 SIGKILL 代表强制中断一个程序的进行,如果该程序进行到一半,那么尚未完成的部分可能会有“半产品”产生,类似 vim会有 .filename.swp 保留下来。
    15 SIGTERM 以正常的方式来终止该程序。由于是正常的终止,所以后续的动作会将他完成。不过,如果该程序已经发生问题,就是无法使用正常的方法终止时,输入这个 signal 也是没有用的。
    19 SIGSTOP 相当于用键盘输入 [ctrl]-z 来暂停一个程序的进行。

    nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

    该命令的一般形式为:nohup command &

    使用nohup命令提交作业

    如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

    nohup command > myout.file 2>&1 &

    后台重定向 文件 说明

    Linux - 程序后台运行命令
    https://blog.csdn.net/trustnature/article/details/119923211

  • 相关阅读:
    动态规划-买股票的最佳时机三
    基于51单片机交通灯仿真_紧急开关+黄灯倒计时+可调时间(proteus+代码+报告+讲解视频)
    ZLToolKit网络库的自问自答
    基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(五)
    QT网络协议知识体系(一)
    什么是AES加密?详解AES加密算法原理流程
    医药资讯网都有哪些?最值得推荐的有哪些?
    泰克Tektronix示波器软件TDS1012|TDS2002|TDS2004上位机软件NS-Scope
    跨域和同源
    竞赛选题 基于深度学习的目标检测算法
  • 原文地址:https://blog.csdn.net/wowocpp/article/details/126424710