• Linux 命令之 2>&1 &


    实例:项目中用到的启动程序脚本 start_server.sh  执行命令:sh   start_server.sh
    nohup python3 oa_sup_server.py >/dev/null 2>&1  &
     
    nohup表示当前用户和系统会话下的进程忽略响应HUP消息,也就是不挂断的运行命令;
     
    & 符号(命令末尾出现的) 是把该命令以后台的job的形式运行;
     
    >/dev/null 表示一个空设备,就是把command 的执行结果重定向到空设备中,就是不显示任何信息
     
    2>&1 :
    首先了解一下:
    0:表示stdin 标准输入
    1:表示stdout  标准输出
    2:表示stderr  标准错误
    command  >/dev/hull   相当于执行了 command  1  >/dev/null  执行command产生了标准输出stdout(用1表示)重定向到/dev/null的设备文件中;
     
    对于 2>&1的理解:2就是标准错误,1就是标准输出,那么可以简单理解为把标准错误重定向到标准输出;
    为什么是 &1 而不是 1, 这里的&符号是什么?
    &符号可以理解为引用(reference),&1 就是对标准输出的引用;
     
    command 1 >a  2>&1 与 command 1>a 2>a 还是有区别的,区别就是在于前者只打开一次文件a,后者会打开文件a两次,并导致stdout被stderr覆盖,&1 的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开a;
     
    从IO效率上来讲,command 1 >a 2>&1 比 command 1>a 2>a 的效率更高; 
  • 相关阅读:
    C对字符串的部分操作
    <string> <string.h>
    最常见的HTTP错误
    python面试题
    玩转type类型(牛逼克拉斯 )
    django路由系统之反向生成url
    django事物回滚
    django中admin路由系统工作原理
    django中的django admin插件
    ajax跨域资源共享
  • 原文地址:https://www.cnblogs.com/guo-s/p/12788763.html
Copyright © 2020-2023  润新知