当前位置: 代码迷 >> 综合 >> nohup 运行程序 >log.txt 2>1 的详细解释
  详细解决方案

nohup 运行程序 >log.txt 2>1 的详细解释

热度:49   发布时间:2023-11-22 06:48:11.0

摘自网络上各种大佬的解释,做一下总结,如有问题,请帮忙指正。

先解释一下nohup的命令:
语法:nohup Command [ Arg … ] [ & ]
描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上);

之后解释这个:
为什么2>&1要放在后面
考虑如下一条shell命令
nohup java -jar app.jar >log.txt 2>&1 &
1
(最后一个&表示把条命令放到后台执行,不是本文重点,不懂的可以自行Google)
为什么2>&1一定要写到>log后面,才表示标准错误输出和标准输出都定向到log中?
我们不妨把1和2都理解是一个指针,然后来看上面的语句就是这样的:

本来1----->屏幕 (1指向屏幕)
执行>log后, 1----->log (1指向log)
执行2>&1后, 2----->1 (2指向1,而1指向log,因此2也指向了log)