在 CentOS 上使用 nohup 启动程序时,日志定位主要看你是怎么重定向的,常见情况和对应定位方法如下:
nohup your_command &
如果不指定重定向,日志默认会写入当前目录的:
nohup.out
ls -l nohup.out
pwd # 确认当前目录
cat nohup.out
tail -f nohup.out
⚠️ 注意:
nohup.out 是在执行命令时的当前目录生成的/root 下执行的,就在 /root/nohup.outnohup your_command > app.log 2>&1 &
tail -f app.log
grep ERROR app.log
less app.log
ps -ef | grep your_command
ls -l /proc/<PID>/fd
示例:
ls -l /proc/12345/fd
你会看到类似:
1 -> /home/user/app.log
2 -> /home/user/app.log
如果程序用的是:
syslogrsyslogjournalctljournalctl -u your_service
或
tail -f /var/log/messages
tail -f /var/log/syslog
| 问题 | 原因 |
|---|---|
| nohup.out 很大 | 没做日志切割 |
| 找不到日志 | 启动目录不对 |
| 日志不更新 | 程序崩了 / 缓冲未刷新 |
nohup your_command >> /var/log/app/app.log 2>&1 &
如果你愿意,可以把你的启动命令发出来,我可以直接帮你定位日志文件。