如何将nohup输出重定向到指定的文件?

时间:2018-03-24 16:41:07

标签: linux bash nohup

我在SO上找到的其他例子中所尝试的一切似乎都没有用。我正在尝试使用nohup运行我的应用程序,但将应用程序的输出附加到文件中。

我尝试了以下一些方法。这些似乎都不起作用。

nohup dotnet application.dll &> out.log &
nohup dotnet application.dll > out.log 2>&1 &
nohup dotnet application.dll > /opt/out.log &

我总是收到类似

的内容
-bash: out.log: Permission denied

我尝试使用sudo运行应用程序,但它似乎仍无效。

nohup dotnet application.dll &

工作正常,但它会将输出定向到其他目录,例如/home/ubuntu/nohup.out

我做错了什么?

1 个答案:

答案 0 :(得分:4)

nohup dotnet application.dll > out.log 2>&1 &是正确的形式。

> out.log将STDOUT重定向到文件out.log

2>&1将fd2(STDERR)重定向到fd1(STDOUT),它已经重定向到文件out.log

您的问题在于文件权限(或只读文件系统)。将sudo添加到您的命令无法解决此问题,因为只有nohup dotnet application.dllsudo以root身份执行,输出重定向由bash以您的普通用户权限完成。您可以通过调用具有root权限的单独shell来解决此问题:

sudo sh -c 'nohup dotnet application.dll > out.log 2>&1 &'