283

当我运行nohup some_command &时,输出转到nohup.outman nohup说看看info nohup哪个反过来说:

如果标准输出是终端,则命令的标准输出附加到文件“nohup.out”;如果无法写入,则将其附加到文件“$HOME/nohup.out”;如果无法写入,则不会运行该命令。

但是,如果我已经有一个使用nohup输出的命令,/nohup.out并且我想运行另一个nohup命令,我可以将输出重定向到nohup2.out吗?

4

5 回答 5

470
nohup some_command &> nohup2.out &

瞧。


Bash 版本 < 4 的旧语法:

nohup some_command > nohup2.out 2>&1 &
于 2010-12-28T21:06:01.673 回答
66

出于某种原因,上述答案对我不起作用;运行它后,我没有返回到命令提示符,正如我对尾随 & 所期望的那样。相反,我只是尝试了

nohup some_command > nohup2.out&

它就像我想要的那样工作。将其留在这里以防其他人处于相同情况。运行 Bash 4.3.8 以供参考。

于 2014-05-14T13:59:44.217 回答
16

每当您在 nohup 命令上运行时,上述方法都会删除您的输出文件数据。

在用户定义的文件中附加输出,您可以>>在 nohup 命令中使用。

nohup your_command >> filename.out &

此命令将在您的文件中附加所有输出,而不会删除旧数据。

于 2017-08-18T15:08:59.093 回答
13

由于文件处理程序指向 Linux/Unix 系统上的 i-nodes(独立于文件名存储),因此您可以nohup.out在启动后随时将默认值重命名为任何其他文件名nohup something&。因此,也可以执行以下操作:

$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&

现在something将行添加到nohup2.out和。something2nohup.out

于 2014-11-21T09:24:37.027 回答
1

我的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

于 2020-10-14T07:30:07.463 回答