如何将nohup输出重定向到指定文件?多种尝试均失败
解决nohup运行dotnet程序时的权限拒绝问题
兄弟,我之前也踩过一模一样的坑!你试的那几个重定向命令其实都是正确的,问题根本不在命令写法上,核心是当前用户没有写入目标文件/目录的权限,给你一步步拆解解决:
先确认权限问题根源
报错 -bash: out.log: Permission denied 说明:
- 如果是写当前目录的
out.log:你当前所在的目录,当前用户没有写入权限 - 如果是写
/opt/out.log:/opt目录默认是root用户拥有权限,普通用户根本没法直接写进去
快速解决方案(推荐)
直接换一个你肯定有权限的目录,比如自己的家目录:
nohup dotnet application.dll > ~/out.log 2>&1 &
~ 代表当前用户的家目录(比如/home/你的用户名),这里你绝对有读写权限,先试试这个能不能正常运行,排除其他问题。
一定要写到指定目录的解决方案
如果你必须把日志写到/opt或者其他受限目录,有几种安全的方式:
1. 用临时管理员权限运行(简单但注意后续权限)
用sudo临时提升权限来运行命令,这样就能写入root权限的目录了:
sudo nohup dotnet application.dll > /opt/out.log 2>&1 &
⚠️ 注意:这样生成的out.log会是root用户所有,后续查看或修改这个日志文件可能需要加sudo,比如cat /opt/out.log要改成sudo cat /opt/out.log。
2. 创建专属日志目录(更安全)
给你的dotnet程序专门建一个日志目录,把权限设置给当前用户,这样既满足写入要求,又不会乱改系统目录的权限:
# 创建专属日志目录 sudo mkdir /opt/dotnet-app-logs # 把目录权限转移给当前用户 sudo chown $USER:$USER /opt/dotnet-app-logs # 现在就可以正常写入这个目录了 nohup dotnet application.dll > /opt/dotnet-app-logs/out.log 2>&1 &
3. 修复已有文件的权限(如果之前创建了日志文件)
如果之前已经生成了没有权限的out.log,先修改文件归属:
sudo chown $USER:$USER /opt/out.log
之后再运行你的nohup命令就没问题了。
额外验证小技巧
如果不确定是不是权限问题,可以先手动创建测试文件:
touch /opt/out.log
如果同样报Permission denied,那100%是目录权限问题,按照上面的方法解决就行。
内容的提问来源于stack exchange,提问作者jjmcc
相关产品推荐
相关产品推荐

