Linux-2>&1命令剖析

223 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

详细剖析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 &