我在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
我做错了什么?
答案 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.dll
由sudo
以root身份执行,输出重定向由bash以您的普通用户权限完成。您可以通过调用具有root权限的单独shell来解决此问题:
sudo sh -c 'nohup dotnet application.dll > out.log 2>&1 &'