zoukankan      html  css  js  c++  java
  • 【Linux命令】nohup命令(jobs、fg、bg)

    nohup命令

    不挂断的运行,它会使您的脚本被忽略SIGHUP,并重定向stdout/stderr到一个文件nohup.out,以便在您注销后该命令可以在后台继续运行。

    1)语法

    1 nohup Command [ Arg ... ] [ & ]

     

    2)功能

    nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。

    3)补充

    操作系统的三个常用流:

           0:标准输入流 stdin
      1:标准输出流 stdout
      2:标准错误流 stderr

      一般当我们用 > console.txt,实际是 1>console.txt的省略用法;< console.txt ,实际是 0 < console.txt的省略用法。

     

    SIGHUP 信号:

      终端关闭时:该信号被发送到session首进程以及作为jobs提交的进程(即用&符号提交的进程)

      session首进程退出时:该信号被发送到该session中的前台进程组中的每一个进程

      若父进程退出导致进程组成为孤儿进程组,该进程组中有进程处于停止状态(收到SIGSTOPSIGTSTP信号),该信号会被发送到该进程组中的每一个进程。

    例如:在我们登录Linux时,系统会分配给登录用户一个终端(Session)。在这个终端运行的所有程序,包括前台进程组和后台进程组,一般都属于这个 Session。当用户退出Linux登录时,前台进程组和后台有对终端输出的进程将会收到SIGHUP信号。这个信号的默认操作为终止进程,因此前台进程组和后台有终端输出的进程就会中止。

    4)实例

    运行某个脚本,退出登录后继续在后台运行

    1 nohup ./test.sh >output 2>&1 &

     

    解释:

    1. 带&的命令行,即使terminal(终端)关闭,或电脑死机程序依然运行; 

    2. 2>&1的意思 
      这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面。 至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的。这就是为什么有人会写成: nohup ./test.sh >output 2>output出错的原因了 
      最后谈一下/dev/null文件的作用,这是一个无底洞(空设备),任何东西都可以定向到这里,但是却无法打开。 所以一般很大的stdou和stderr当你不关心的时候可以利用stdout和stderr定向到这里
    比如:cat /dev/null > catalina.out 2>&1(这样就达到清空日志文件的效果)

     

    5)相关命令

    jobs:可以打印当前正在运行的作业及其状态。如果命令jobs找不到它,那么它不再是该shell的子进程。( jobs 查看后台运行的进程 )

    fg(Foreground):即使运行后,也可以使用bash将后台作业带回前台nohup。但这不会改变输出重定向,它仍将转移到文件中nohup.out。(fg %n 让后台运行的进程n到前台来 )

    bg %n 让进程n到后台去(Background);

    PS: "n"为jobs查看到的进程编号.

     

     

    参考网站:https://yq.aliyun.com/articles/704932

    参考网站:https://www.cnblogs.com/xiaoleiel/p/8349675.html

     

  • 相关阅读:
    概率dp呜呜
    树上路径问题---点分治题集
    POJ 1741 Tree
    接下来的计划
    很逗 的网络赛历程
    Codeforces Round #264 (Div. 2) D
    似乎了解了树形dp/
    先胡乱搭一个blog
    POJ 1330 (LCA)
    文件操作
  • 原文地址:https://www.cnblogs.com/HeiDi-BoKe/p/11422599.html
Copyright © 2011-2022 走看看