shell命令----2>&1

nohup java -jar $HOME/pserver9997.jar > $HOME/server.log 2>&1 &   
#启动聊天服务器 把日志输出到HOME目录的server.log文件中

对于&1,更准确地说,应该是文件描述符1,而1是标识标准输出,sdout。

对于2,表示标准错误,stderr。

2>&1的意思就是将标准错误重定向到标准输出。这里标准输出已经重定向到了server.log,那么标准错误也会重定向到server.log。

偶尔也可以把 & 在命令的最后加上,表示让程序后台执行。

 

为何2>&1要写在后面?

index.php task testOne >/dev/null 2>&1

 我们可以理解为,左边是标准输出,好,现在标准输出直接输出到/dev/null中,而2>&1是将标准错误重定向到标准输出,所以当程序产生错误的时候,相当于错误流向左边,而左边依旧是输出到/dev/null中。

 

/dev/null是何意?

可以吧/dev/null看做是“黑洞”,它等价于一个只写文件,所有写入它的内容都会永久丢失。而尝试从它那儿读取内容则什么也读不到~

posted @ 2019-12-16 16:46  冰糖雪梨喵喵  阅读(472)  评论(0编辑  收藏  举报