`

(转) nohup /dev/null 2>&1

阅读更多
nohup命令及其输出文件

  nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。

该命令的一般形式为:nohup command &




ls xxx 1>out.txt 2>&1
nohup /mnt/Nand3/H2000G >/dev/null 2>&1 &
对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.其中0 表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,然后扔到/DEV/NULL下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。
command >out.file 2>&1 &
command >out.file是将command的输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个& , 是让该命令在后台执行。

试想2>1代表什么,2与>结合代表错误重定向,而1则代表错误重定向到一个文件1,而不代表标准输出;
换成2>&1,&与1结合就代表标准输出了,就变成错误重定向到标准输出.

你可以用
ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;
ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中;
ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;
ls xxx >out.txt 2>&1, 实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。
       为何2>&1要写在后面?
       command > file 2>&1
首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。
command 2>&1 >file
2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

用strace可以看到:
1. command > file 2>&1
这个命令中实现重定向的关键系统调用序列是:
open(file) == 3
dup2(3,1)
dup2(1,2)

2. command 2>&1 >file
这个命令中实现重定向的关键系统调用序列是:
dup2(1,2)
open(file) == 3
dup2(3,1)

为什么要用 /dev/null 2>&1 这样的写法.这条命令的意思是将标准输出和错误输出全部重定向到/dev/null中,也就是将产生的所有信息丢弃.下面我就为大家来说一下, command > file 2>file   与command > file 2>&1 有什么不同的地方.
首先~command > file 2>file 的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command   > file 2>file 这样的写法,stdout和stderr都直接送到file中, file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道.
而command >file 2>&1 这条命令就将stdout直接送向file, stderr 继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容.
从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会用command > file 2>&1 这样的写法.
分享到:
评论

相关推荐

    详解nohup /dev/null 2&1 含义的使用

    nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对 于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述

    详解nohup /dev/null 2>&1 含义的使用

    主要介绍了详解nohup /dev/null 2>&1 含义的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    kafka-manager-1.3.0.8.zip

    此代码是已经编译好的kafaka的管理端,下载...3、启动,nohup ./kafka-manager -Dconfig.file=../conf/application.conf -Dhttp.port=9001 >/dev/null 2>&1 & 4、在地址栏输入对应的ip:9001即可进入kafka-manager界面。

    Apple_analysis

    输入python3 run.py 启动服务后台挂起进程nohup python3 run.py >/dev/null 2>&1 &nohup python3 text_pre_pro.py >/dev/null 2>&1 &nohup python3 report_cache.py >/dev/null 2>&1 &数据库mysql_host = "0.0.0.0 ...

    linux shell 中 2>1的含义

    nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1,而1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.他标准输出到all_result ,然后复制标准输出到文件描述符...

    time时间同步(客户端+服务端)-支持Cenos 7

    nohup sh /home/peim/peim_linux/time/time_service.sh >/dev/null 2>&1 & 输入nohup sh /home/peim/peim_linux/time/time_client.sh >/dev/null 2>&1 & linux客户端可同步linux服务端时间 (5s同步一次)

    seata-server-1.4.2

    seata服务端1.4.2,包含数据库SQL。如果需要公网访问,启动命令为 nohup ./seata-server.sh -h 公网IP >/dev/null 2>&1 &

    kafka-manager-2.0.0.2-compile.zip

    kafa-manager-2.0.0.2编译版,需要jdk1.8支持,分享 运行启动kafka-manager,默认jdk1.8后面可以省掉 cd kafka-manager/bin ...nohup ./kafka-manager -Dconfig.file=../conf/application.conf >/dev/null 2>&1 &

    yongliangcode#myArticle#草稿Pulsar#4 Pulsar Manager安装1

    下载安装包启动部署nohup ./bin/pulsar-manager > pulsar-manager.log 2>&1 < /dev/null &添加超级用

    mysql数据库CPU高,实时抓住数据库执行中的SQL语句,shell工具(支持mysql5.7)

    mysqlCPU高语句实时监控 ...nohup ./top-mysql-repeat.sh >/dev/null 2>&1 & 如果实时监控,./top-mysql-repeat.sh Ctrl+c退出。 执行后输出txt类别文件。为了看起来更工整,输出xls格式文件。 结果如图所示:

    laravel中Redis队列监听中断的分析

    nohup php artisan queue:listen --timeout=90 --tries=1 >> /dev/null 2>&1 & 2、发现问题(日志) In Process.php line 429: The process has been sinaled with signal "1". 3、查询资料(linux信号中断) ...

    VOS30002120 Watchdong Service

    $PS -ef|$GREP -v grep|$GREP $NAME >/dev/null 2>&1 case "$?" in 0) # It is running in this case so we do nothing. $NOP ;; 1) echo "$NAME is NOT RUNNING. Starting $NAME and sending notices." $...

    maven-akka-microservice:基于java、maven、springboot、akka的微服务开发原型

    nohup java -jar build/libs/maven-akka-microservice-1.0-SNAPSHOT.jar 1>/dev/null 2>&1 & 视窗 java -jar build/libs/maven-akka-microservice-1.0-SNAPSHOT.jar 1>/dev/null 待定积分 1-包括 WS Akka 支持。 ...

    Beego+Vue实现毕业设计校园生活服务平台gcmiss.zip

    Beego+Vue实现毕业设计校园生活服务平台gcmiss.zip 项目介绍 毕业设计校园生活服务网站,集校园交流、失物招领、寻物启事、求人办事、...nohup go run main.go >/dev/null 2>&1 & Nginx配置 恶意请求ip封禁,可参考 ...

    spring-cloud-consul

    ~ consul versionConsul v1.2.22、consul 服务器端启动nohup consul agent -server -bind=本机IP -bootstrap-expect=1 -client=0.0.0.0 -data-dir=/data/consul/data/ -node=server1 >/dev/null 2>&1 &-server 表示...

    roon-extension-linuxkeyboardremote:使用Linux键盘的远程控制Roon

    使用Linux键盘的远程控制Roon 对Linux键盘进行编程以充当Roon遥控器。... 崩溃后在控制台中运行并进行恢复: bash node-recovery.sh 在后台运行: nohup bash node-recovery.sh >/dev/null 2>&1 & 作为系统服务运行:

    PHP创建单例后台进程的方法示例

    "nohup $command > /dev/null 2>&1 & echo $!"); nohup表示这个进程独立于创建的用户,可以以守护方式运行。 如果需要这个后台进程是单例运行的,那么可以通过下面的方法来记录/判断进程是否已运行 //query ...

    JrebelBrainsLicenseServerforJava:自建JRebel许可服务器用到的原始

    linux后台启动:nohup java -jar JrebelBrainsLicenseServerforJava-1.0-SNAPSHOT-jar-with-dependencies.jar -p 8081> / dev / null 2>&1& 访问地址: guid可以使用UUID直接生成,或者使用 破解补丁破解IDEA ...

    janusgraph-visualization:一个简单的janusgraph查询工具(一个简单的janusgraph查询可视化工具)

    nohup java -jar janusgraph-visualization-x.x.x.jar >/dev/null 2>&1& 然后浏览器打开 如果要修改端口 java -jar janusgraph-visualization-x.x.x.jar --server.port=80 与Docker一起运行 docker pull fenglex/...

    pa11y-reporter-ci:持续集成环境的 pa11y 报告器

    pa11y-reporter-ci pa11y 的以 CI 为中心的记者。 当错误超过零时,该库返回退出代码 1(测试失败),当出现零... - nohup http-server -p 8080 >/dev/null 2>&1 & - pa11y localhost:8080/index.html -r ci -s WC

Global site tag (gtag.js) - Google Analytics