在Debian系统中,使用nohup命令结合其他工具可以实现日志轮转。以下是一个简单的示例,展示如何使用nohup和logrotate来实现日志轮转。
首先,创建一个简单的测试脚本,用于生成日志文件。
#!/bin/bash
# 创建一个日志文件
LOGFILE="app.log"
# 无限循环,每隔一秒写入一行日志
while true; do
echo "$(date) - This is a log entry" >> $LOGFILE
sleep 1
done
将上述脚本保存为test_log.sh,并赋予执行权限:
chmod +x test_log.sh
nohup运行脚本使用nohup命令在后台运行该脚本,并将输出重定向到一个日志文件中。
nohup ./test_log.sh > app.log 2>&1 &
这行命令的解释如下:
nohup:使进程忽略挂起(SIGHUP)信号。./test_log.sh:运行测试脚本。> app.log:将标准输出重定向到app.log文件。2>&1:将标准错误输出重定向到标准输出,即也写入app.log文件。&:将命令放入后台运行。logrotatelogrotate是一个用于管理日志文件的工具,可以自动轮转、压缩和删除旧日志文件。首先确保logrotate已安装:
sudo apt-get install logrotate
创建一个logrotate配置文件,例如/etc/logrotate.d/test_log,内容如下:
/path/to/app.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 640 root adm
}
解释:
/path/to/app.log:指定要轮转的日志文件路径。daily:每天轮转一次日志文件。rotate 7:保留7个轮转后的日志文件。compress:压缩轮转后的日志文件。delaycompress:延迟压缩,直到下一次轮转。missingok:如果日志文件不存在,不报错。notifempty:如果日志文件为空,不轮转。create 640 root adm:创建新的日志文件,权限为640,属主为root,属组为adm。运行logrotate手动测试配置是否正确:
sudo logrotate -f /etc/logrotate.d/test_log
检查app.log文件是否被轮转并压缩。
logrotate通常会每天自动运行一次,检查并轮转日志文件。你可以通过查看/etc/cron.daily/logrotate文件来确认这一点。
通过以上步骤,你就可以在Debian系统中使用nohup命令结合logrotate实现日志轮转了。