在 CentOS 系统中,使用 nohup 命令运行程序时,默认情况下不会有日志轮转功能。为了实现日志轮转,你可以使用 logrotate 工具来管理日志文件。以下是配置和使用 logrotate 的步骤:
大多数 CentOS 系统默认已经安装了 logrotate,但如果没有安装,可以使用以下命令进行安装:
sudo yum install logrotate 你需要为你的应用程序创建一个 logrotate 配置文件。通常,这些配置文件位于 /etc/logrotate.d/ 目录下。
例如,假设你的应用程序日志文件是 /var/log/myapp.log,你可以创建一个名为 myapp 的配置文件:
sudo vi /etc/logrotate.d/myapp 在文件中添加以下内容:
/var/log/myapp.log { daily rotate 7 compress delaycompress missingok notifempty create 640 root adm } 解释一下这些选项的含义:
daily: 每天轮转一次日志文件。rotate 7: 保留最近 7 天的日志文件。compress: 压缩旧的日志文件。delaycompress: 延迟压缩,直到下一次轮转。missingok: 如果日志文件丢失,不要报错。notifempty: 如果日志文件为空,不进行轮转。create 640 root adm: 创建新的日志文件,权限为 640,属主为 root,属组为 adm。你可以使用以下命令测试 logrotate 配置是否正确:
sudo logrotate -f /etc/logrotate.d/myapp -f 选项表示强制轮转日志文件。
logrotate 通常会每天自动运行一次,检查并轮转日志文件。你可以通过查看 /etc/cron.daily/logrotate 文件来确认这一点。
确保你的程序使用 nohup 命令运行,并将输出重定向到日志文件。例如:
nohup your_command > /var/log/myapp.log 2>&1 & 这样,程序的输出会被写入 /var/log/myapp.log,并且 logrotate 会自动管理这个日志文件。
通过以上步骤,你就可以在 CentOS 系统中实现 nohup 日志轮转了。