zoukankan      html  css  js  c++  java
  • linux中>/dev/null 2>&1和2>&1 > /dev/null

    1. >/dev/null

    这条命令的作用是将标准输出1重定向到/dev/null中。/dev/null代表linux的空设备文件,所有往这个文件里面写入的内容都会丢失,俗称“黑洞”。那么执行了>/dev/null之后,标准输出就会不再存在,没有任何地方能够找到输出的内容。

    2. 2>&1

    这条命令用到了重定向绑定,采用&可以将两个输出绑定在一起。这条命令的作用是错误输出将和标准输出同用一个文件描述符,说人话就是错误输出将会和标准输出输出到同一个地方。

    linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令,所以>/dev/null 2>&1的作用就是让标准输出重定向到/dev/null中(丢弃标准输出),然后错误输出由于重用了标准输出的描述符,所以错误输出也被定向到了/dev/null中,错误输出同样也被丢弃了。执行了这条命令之后,该条shell命令将不会输出任何信息到控制台,也不会有任何信息输出到文件中

    3.>/dev/null 2>&1 VS 2>&1 >/dev/null

    linux在执行shell命令之前,就会确定好所有的输入输出位置,并且从左到右依次执行重定向的命令。那么我们同样从左到右地来分析2>&1 >/dev/null

    2>&1,将错误输出绑定到标准输出上。由于此时的标准输出是默认值,也就是输出到屏幕,所以错误输出会输出到屏幕。

    >/dev/null,将标准输出1重定向到/dev/null中。

    我们用一个表格来更好地说明这两条命令的区别:

    命令标准输出错误输出
    >/dev/null 2>&1 丢弃 丢弃
    2>&1 >/dev/null 丢弃 屏幕

    4.&

    当在前台运行某个作业时,终端被该作业占据;可以在命令后面加上& 实现后台运行。例如:sh test.sh &

    适合在后台运行的命令有f i n d、费时的排序及一些s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

    command  >  out.file  2>&1  &

    这样,所有的标准输出和错误输出都将被重定向到一个叫做out.file 的文件中。

    注意:当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。(ps -ef | grep 进程号     或者   kill -9 进程号)

    5.nohup命令

    使用&命令后,作业被提交到后台运行,当前控制台没有被占用,但是一但把当前控制台关掉(退出帐户时),作业就会停止运行。nohup命令可以在你退出帐户之后继续运行相应的进程。nohup就是不挂起的意思( no hang up)。该命令的一般形式为:

    nohup command &   #后台运行退出账号不挂掉
    nohup java command >/dev/null 2>&1 &  #后台运行退出账号不挂掉,标准输和错误输出都丢弃

      

  • 相关阅读:
    Linux、CentOS系统下调整home和根分区大小
    Dell服务器Raid卡电池策略调整
    自建Saltstack的repo软件源仓库
    CentOS6.6下DRBD+HeartBeat+NFS配置
    go vendor目录
    cmd/go: unsupported GOOS/GOARCH pair linux /amd64
    linux的单用户模式
    go import导入的理解
    监控系统整合告警平台实现邮件、短信、微信、电话语音和app等多方式报警
    如何以非交互方式为psql指定密码?
  • 原文地址:https://www.cnblogs.com/chong-zuo3322/p/14113210.html
Copyright © 2011-2022 走看看