zoukankan      html  css  js  c++  java
  • 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++ 异常处理 assert | try
    c++ 容器类
    protobuf 向前兼容向后兼容
    命名空间和模块化编程,头文件
    对象3:继承
    动态内存 this指针
    对象2 构造,析构
    对象 1 作用域解析符 ::
    hibernate-criteria查询
    oracle报错:ORA-28000: the account is locked
  • 原文地址:https://www.cnblogs.com/guo-s/p/12788763.html
Copyright © 2011-2022 走看看