本文已参与「新人创作礼」活动,一起开启掘金创作之路。
详细剖析2>&1,&与nohup的区别
2>&1
看下这个命令nohup command>/dev/null 2>&1 &
nohup表示可以在你退出帐户之后继续运行相应的进程>代表重定向到哪里,例如:echo "123" > /home/123.txt- /dev/null 表示空设备文件
- 2>&1 表示把标准错误重定向到标准输出
- 0 表示stdin标准输入
- 1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于 “1>/dev/null”
- 2 表示stderr标准错误
&表示该命令以后台的job的形式运行
command>a 2>a VS command>a 2>&1
- command>a 2>&1:打开了一次文件a,&1的含义就可以理解为用标准输出的引用
- command>a 2>a:打开文件两次,并导致stdout被stderr覆盖
>/dev/null 2>&1 VS 2>&1 >/dev/null
>/dev/null 2>&1:标准输出(丢弃),错误输出(丢弃)2>&1 >/dev/null:标准输出(丢弃),错误输出(屏幕)
&与nohup的区别和用法
- & 后台运行,但log依然输出到当前终端,当前终端关闭则停止运行
- nohup 正常退出当前终端,命令仍后台运行,程序输出默认重定向到一个nohup.out文件下。
# 使用方法
$ nohup ./test > myout.txt 2>&1 &