ICE.ICE|

韩憨

园龄:4年7个月粉丝:42关注:47

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

https://www.jb51.net/article/169837.htm

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

 

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

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

1
2
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下面去。通俗的说,就是把所有标准输出和标准出错都扔到垃圾桶里面。

1
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要写在后面?

1
command > file 2>&1

首先是command > file将标准输出重定向到file中, 2>&1 是标准错误拷贝了标准输出的行为,也就是同样被重定向到file中,最终结果就是标准输出和错误都被重定向到file中。

1
command 2>&1 >file

2>&1 标准错误拷贝了标准输出的行为,但此时标准输出还是在终端。>file 后输出才被重定向到file,但标准错误仍然保持在终端。

用strace可以看到:

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

1
2
3
open(file) == 3
dup2(3,1)
dup2(1,2)

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

1
2
3
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 这样的写法.

本文作者:韩憨

本文链接:https://www.cnblogs.com/hanby/p/14291271.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   韩憨  阅读(1697)  评论(2编辑  收藏  举报
//看板娘

哥伦布

点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 隔离 (Studio Live Duet) 陈凯咏,林家谦
  2. 2 明知做戏 吴雨霏
  3. 3 残酷游戏 卫兰
  4. 4 你,好不好? 周兴哲
  5. 5 我可以 蔡旻佑
  6. 6 云烟成雨 房东的猫
  7. 7 说散就散 JC 陈咏桐
  8. 8 我配不上你 夏天Alex
  9. 9 不再联系 夏天Alex
  10. 10 等我先说 夏天Alex
  11. 11 我知道他爱你 夏天Alex
  12. 12 多想在平庸的生活拥抱你 隔壁老樊
  13. 13 这一生关于你的风景 隔壁老樊
  14. 14 我曾 隔壁老樊
  15. 15 关于孤独我想说的话 隔壁老樊
  16. 16 过客 周思涵
  17. 17 备爱 周思涵
  18. 18 嚣张 en
  19. 19 海口 后弦
隔离 (Studio Live Duet) - 陈凯咏,林家谦
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 陈耀森/朱敏希

作曲 : 严晓蕾

编曲 : 林家谦/崔展鸿/Steffunn 勋/Chan Siu Kei

中断联系了吗

想约他 私讯他 别无视我好吗

中断联系了吗

蓝剔 诱惑你等他

一堆废话 愿意覆吗

通讯被限制吗 不必怕

关注他 追看他 在荧幕里牵挂

通讯被限制吗 不必怕

单剔 隔绝我跟他

封锁了吗 就放下

何以 将我消失 不再说起

十四天 大概足以证实 情伤你会治理

何以 将我消失 不再说起

谁知你 上传十个限时动态定时直播

谁知我 上传十个限时动态定时直播

谁知你 上传十个限时动态定时直播

醉过喊过期待有他深切慰问我

但你清清楚楚终止交往他更快乐过

被退出惊讶什么

每晚勉强全面离线未见得更易过

谁管我 独来独往大时大节未提及我

每晚勉强全面离线未见得更易过

更有反效果

未曾犯错 隔离了我

隔篱有我

阻止我搞清楚

很想你搞清楚

通讯被限制吗 不必怕

关注他 追看他 在荧幕里牵挂

通讯被限制吗 不必怕

单剔 隔绝我跟他

封锁了吗 就放下

何以 将我消失 不再说起

十四天 大概足以证实 情伤你会治理

何以 将我消失 不再说起

上传十个限时动态定时直播

谁知你 上传十个限时动态定时直播

上传十个限时动态定时直播

醉过喊过期待有他深切慰问我

醉过喊过期待你分几秒注视我

但我清清楚楚终止交往他更快乐过

清清楚楚终止交往他更快乐过

被退出惊讶什么

谁想你 独来独往大时大节未提及我

谁管我 独来独往大时大节未提及我

谁想你 独来独往大时大节未提及我

每晚勉强全面离线未见得更易过

每晚勉强全面离线 更有反效果

未曾犯错 隔离了我

未曾犯错 隔离了我

阻止我搞清楚

很想你搞清楚

管他残忍到下世

懒理我被垫底

管他残忍到下世

回复掣 无情被废

退掉追踪 仍不甘放低

退掉追踪 何苦不放低

醉过喊过傻在博他一次慰问我

明知我 上传十个限时动态定时直播

醉过喊过傻在博他一次慰问我

任我辛辛苦苦花光心血不会有突破

盲目爱痛着蹉跎

谁想你 独来独往大时大节未提及我

谁管我 独来独往大时大节未提及我

谁想你 独来独往大时大节未提及我

说句再见全面离线未见他挂念过

说句再见全面离线 更有反效果

为何犯错 隔离了我

为何犯错 隔篱有我

该怎去搞清楚

根本你很清楚

别无视我好吗 中断联系了吗

想约他 私讯他

别无视我好吗 中断联系了吗

等他 回覆

答我 解说一下