在Linux中,nohup
命令用于在后台运行程序,即使关闭终端或断开连接也不会终止
myapp.log
。touch myapp.log
nohup
命令运行你的程序,并将输出重定向到日志文件。例如,如果你的程序是./myapp
,则可以这样运行:nohup ./myapp > myapp.log 2>&1 &
这里,>
表示将标准输出重定向到myapp.log
,2>&1
表示将标准错误重定向到标准输出(即myapp.log
),最后的&
表示在后台运行。
logrotate
工具。首先,确保已经安装了logrotate
。在大多数Linux发行版中,它应该已经预装了。如果没有,可以使用以下命令安装:对于基于Debian的系统(如Ubuntu):
sudo apt-get install logrotate
对于基于RPM的系统(如CentOS、Fedora):
sudo yum install logrotate
logrotate
配置文件,例如/etc/logrotate.d/myapp
,并添加以下内容:/path/to/myapp.log {
daily
rotate 7
compress
missingok
notifempty
create 640 root adm
}
这里的配置表示:
daily
:每天轮转日志。rotate 7
:保留7个轮转日志。compress
:压缩旧的日志文件。missingok
:如果日志文件不存在,不会产生错误。notifempty
:如果日志文件为空,不进行轮转。create 640 root adm
:创建新的日志文件,权限为640,属主为root,属组为adm。logrotate
定时任务已启用。编辑/etc/cron.daily/logrotate
文件,确保其中包含以下内容:#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
logrotate
将自动处理myapp.log
文件的轮转。你可以手动运行logrotate
命令来测试配置是否正确:sudo logrotate /etc/logrotate.d/myapp
这样,通过结合使用nohup
和logrotate
,你可以在Linux中实现日志轮转。