nohup 命令用于在后台运行程序,即使关闭终端或断开连接,程序也会继续运行。默认情况下,nohup 会将输出重定向到名为 nohup.out 的文件中。为了实现日志轮转,可以使用 logrotate 工具或者自定义脚本来实现。
使用 logrotate 实现日志轮转
-
确保已经安装了
logrotate。在大多数 Linux 发行版中,logrotate已经预装。如果没有安装,可以使用以下命令安装:sudo apt-get install logrotate # Debian/Ubuntu sudo yum install logrotate # CentOS/RHEL -
创建一个
logrotate配置文件,例如/etc/logrotate.d/myapp,并添加以下内容:/path/to/your/logs/nohup.out { daily rotate 7 compress missingok notifempty create 0640 user group }这个配置表示每天轮转一次日志,保留最近 7 天的日志,压缩旧日志,如果日志文件不存在则不报错,如果日志文件为空则不轮转,创建新的日志文件并设置权限和属主属组。
-
确保
logrotate定时任务已启用。通常,logrotate会自动运行,但你可以检查/etc/cron.daily/logrotate文件是否存在并确保其可执行。
自定义脚本实现日志轮转
如果你不想使用 logrotate,可以编写一个简单的 shell 脚本来实现日志轮转。以下是一个示例脚本:
#!/bin/bash
LOG_FILE="/path/to/your/logs/nohup.out"
MAX_LOG_SIZE=104857600 # 100MB
BACKUP_COUNT=7
if [ -f "$LOG_FILE" ]; then
LOG_SIZE=$(stat -c%s "$LOG_FILE")
if [ "$LOG_SIZE" -gt "$MAX_LOG_SIZE" ]; then
mv "$LOG_FILE" "${LOG_FILE}.$(date +%Y%m%d%H%M%S)"
gzip "${LOG_FILE}.$(date +%Y%m%d%H%M%S)"
touch "$LOG_FILE"
fi
fi
# 移动旧日志文件并压缩
find /path/to/your/logs -name "nohup.out.*" -type f -mtime +$BACKUP_COUNT -exec gzip {} \;
将此脚本保存为 rotate_logs.sh,并使用 chmod +x rotate_logs.sh 命令使其可执行。然后,你可以将此脚本添加到 cron 定时任务中,例如每天运行一次:
0 0 * * * /path/to/rotate_logs.sh
这样,你的日志文件将在达到指定大小时自动轮转,并保留指定数量的旧日志。
以上就是关于“nohup命令日志中如何实现日志轮转”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm