当我运行nohup some_command &
时,输出转到nohup.out
;man nohup
说看看info nohup
哪个反过来说:
如果标准输出是终端,则命令的标准输出附加到文件“nohup.out”;如果无法写入,则将其附加到文件“$HOME/nohup.out”;如果无法写入,则不会运行该命令。
但是,如果我已经有一个使用nohup
输出的命令,/nohup.out
并且我想运行另一个nohup
命令,我可以将输出重定向到nohup2.out
吗?
nohup some_command &> nohup2.out &
瞧。
Bash 版本 < 4 的旧语法:
nohup some_command > nohup2.out 2>&1 &
出于某种原因,上述答案对我不起作用;运行它后,我没有返回到命令提示符,正如我对尾随 & 所期望的那样。相反,我只是尝试了
nohup some_command > nohup2.out&
它就像我想要的那样工作。将其留在这里以防其他人处于相同情况。运行 Bash 4.3.8 以供参考。
每当您在 nohup 命令上运行时,上述方法都会删除您的输出文件数据。
要在用户定义的文件中附加输出,您可以>>
在 nohup 命令中使用。
nohup your_command >> filename.out &
此命令将在您的文件中附加所有输出,而不会删除旧数据。
由于文件处理程序指向 Linux/Unix 系统上的 i-nodes(独立于文件名存储),因此您可以nohup.out
在启动后随时将默认值重命名为任何其他文件名nohup something&
。因此,也可以执行以下操作:
$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&
现在something
将行添加到nohup2.out
和。something2
nohup.out
我的start.sh文件:
#/bin/bash
nohup forever -c php artisan your:command >>storage/logs/yourcommand.log 2>&1 &
只有一件重要的事情。第一个命令必须是“nohup”,第二个命令必须是“永远”,“-c”参数是永远的参数,“2>&1 &”区域是“nohup”。运行此行后,您可以从终端注销,重新登录并运行“forever restartall”瞧……您可以重新启动,并且可以确定如果脚本停止,那么将永远重新启动它。
我永远<3