• nohup 、&、 2>&1 命令分析



    nohup的意思是不间断的运行,&的意思是后台运行,2>&1的意思是标准输出和错误输出都重定向到同一个文件。
    简单地说nohup运行时即使关掉控制台,它该运行还是运行。
    https://blog.csdn.net/liuyanfeier/article/details/62422742讲解的比较透彻,我给他做一点补充
    可以参考https://www.jianshu.com/p/747e0d5021a2

    nohup 命令分析

    先假设一个情况,想要后台运行一个命令怎么办?最好的办法是用&,在命令的结尾加一个&就可以在后台运行了。

    &实例解析

    假设有一个python程序叫做123.py
    代码是这个样子,一直去输出一些东西。

    import time
    a = 1
    while True:
            print("start to print sth")                                                                                                                       
            a+=1
            print("a=%s" %(a))
            time.sleep(2)
    

    如果运行它的话需要python3 123.py,可以把正确的内容重定向到log.txt。这个时候命令就是
    python3 123.py > log.txt

    • 运行后,控制台一直是这个样子,无法进行其他的操作。
    su@DESKTOP-FA1P4IO:~$ python3 123.py >> log.txt
    
    
    • 后面加一个&后就可以进行操作别的东西了。
    suyuesheng@DESKTOP-FA1P4IO:~$ python3 123.py >> log.txt &
    [2] 809
    suyuesheng@DESKTOP-FA1P4IO:~$
    

    但是关闭控制台后,即使python3 123.py >> log.txt &后面有&依然会被终止进程。
    因为关闭终端后会收到挂断信号。nohup就不会收到挂断信号。

    nohup正如名字所声称的,忽略所有发送给子命令的挂断(SIGHUP)信号。
    这样所有发给命令的SIGHUP信号都被忽略,命令就不会收到SIGHUP信号。
    什么是SIGHUP信号呢?
    简单的理解可以是终端结束时,操作系统会发送SIGHUP信号到后台进程。

    • 用nohup是这个样子的
    su@DESKTOP-FA1P4IO:~$ nohup python3 123.py >> log.txt &
    [3] 905
    
  • 相关阅读:
    字符串练习
    python基础
    熟悉常用的Linux操作
    大数据概述
    递归下降分析程序
    自动机
    词法语法分析1
    关于我对编译原理的理解
    6小时学会TypeScript入门实战教程(大地)
    kotlin
  • 原文地址:https://www.cnblogs.com/sogeisetsu/p/11403326.html
Copyright © 2020-2023  润新知