阅读量:185
nohup 命令用于在后台运行程序,即使关闭终端也不会中断。默认情况下,nohup 会将输出重定向到 nohup.out 文件。为了防止这个文件变得过大,可以使用日志轮转策略。以下是几种常见的方法来设置 nohup 日志的轮转策略:
方法一:使用 logrotate 工具
logrotate 是一个非常强大的日志管理工具,可以自动轮转、压缩和删除日志文件。
创建一个配置文件:在 /etc/logrotate.d/ 目录下创建一个新的配置文件,例如 myapp。
sudo nano /etc/logrotate.d/myapp
添加配置内容:在配置文件中添加以下内容:
/path/to/nohup.out {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
解释:
测试配置:你可以手动测试 logrotate 配置是否正确:
sudo logrotate -f /etc/logrotate.d/myapp
方法二:使用 cron 定时任务
如果你不想使用 logrotate,也可以使用 cron 定时任务来手动轮转日志。
编辑 crontab 文件:
crontab -e
添加定时任务:添加以下内容,每天午夜执行一次日志轮转:
0 0 * * * /bin/mv /path/to/nohup.out /path/to/nohup.out.$(date +\%Y\%m\%d)
0 0 * * * /usr/bin/find /path/to -name 'nohup.out.*' -type f -mtime +7 -exec rm {} \;
解释:
方法三:使用 split 命令
你也可以使用 split 命令来分割日志文件。
创建一个脚本:创建一个脚本文件,例如 rotate_nohup.sh。
nano rotate_nohup.sh
添加脚本内容:
#!/bin/bash
LOG_FILE="/path/to/nohup.out"
MAX_SIZE=100M
TIMESTAMP=$(date +\%Y\%m\%d\%H\%M\%S)
mv $LOG_FILE "${LOG_FILE}.${TIMESTAMP}"
touch $LOG_FILE
赋予执行权限:
chmod +x rotate_nohup.sh
添加 cron 定时任务:
crontab -e
添加以下内容,每小时检查并分割日志文件:
0 * * * * /path/to/rotate_nohup.sh
通过以上方法,你可以有效地管理 nohup 日志文件,防止其变得过大。选择适合你需求的方法进行配置即可。