在 Debian 下,nohup 本身不能配置日志格式或滚动,它只是把程序的标准输出/错误重定向到文件。所谓“配置 nohup 日志”,通常是从以下几个方面入手:
nohup your_command > app.log 2>&1 &
说明:
> app.log:标准输出写文件2>&1:错误输出合并到标准输出&:后台运行⚠️ 日志会一直增长,不会自动切割。
logrotate(Debian 自带,最正规)示例:为 app.log 配置 logrotate
sudo nano /etc/logrotate.d/myapp
内容示例:
/var/log/myapp/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
}
关键点:
copytruncate:不重启进程就截断日志(适合 nohup 程序)daily / rotate 7:每天切,保留 7 天测试:
sudo logrotate -d /etc/logrotate.d/myapp
rotatelogs(Apache 工具)nohup your_command | rotatelogs /var/log/myapp/app.%Y%m%d.log 86400 &
安装:
sudo apt install apache2-utils
如果你在 Debian 上长期运行程序,不建议用 nohup。
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=My App
After=network.target
[Service]
ExecStart=/path/to/your_command
StandardOutput=append:/var/log/myapp.log
StandardError=append:/var/log/myapp.err
Restart=always
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
查看日志:
journalctl -u myapp
✅ 自带日志管理、重启、权限控制
| 需求 | 推荐方式 |
|---|---|
| 简单后台运行 | nohup |
| 日志按天切割 | logrotate / rotatelogs |
| 长期稳定运行 | systemd |
| 日志不丢失 | systemd + journald |
| 多程序日志隔离 | systemd 服务 |
nohup cmd > log 2>&1 &systemd + logrotate如果你愿意,可以告诉我:
我可以直接给你一份可复制的配置。