商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > nohup命令的输出日志如何分割

nohup命令的输出日志如何分割

  发布于2026-07-15 阅读(0)

扫一扫,手机访问

好的,作为一位在系统运维领域摸爬滚打多年的老手,我来帮你把这篇关于日志分割的干货,用更接地气的方式重新组织一下。咱们直接开聊。 `nohup` 命令大家都不陌生,它能让程序在后台“悄悄”运行,即使你关掉终端,它也不受影响。但有个小麻烦:默认情况下,它的输出会一股脑儿全写进 `nohup.out` 这个文件里。时间一长,这个文件就会变得非常庞大,既不好查看,也不利于管理。那么,怎么优雅地处理这个问题呢?其实有两种主流方案,一个是用现成的 `logrotate` 工具,另一个是自己写个脚本配合定时任务。 ![nohup命令的输出日志如何分割](http://img.318050.com/uploads/20260714/17840257156a5612737a782278066088.webp) ### 使用 logrotate 分割日志 `logrotate` 几乎是 Linux 系统的标配,大多数发行版都预装了。如果没有,用 `apt`、`yum` 或 `pacman` 这些包管理器装一下就行,几分钟的事。 接下来,为你的应用创建一个配置文件,比如 `/etc/logrotate.d/myapp`。内容可以这样写: ```bash /path/to/your/nohup.out { daily rotate 7 compress missingok notifempty create 0640 user group } ``` 这个配置的含义很清晰:每天分割一次,保留最近7天的日志,旧日志自动压缩。如果文件不存在,也不报错;如果日志文件是空的,就跳过分割。最后,它会创建一个新的日志文件,权限设为 `0640`,属主和属组分别指定为 `user` 和 `group`。 配置完成后,执行一下这个命令让配置生效: ```bash sudo logrotate -f /etc/logrotate.conf ``` ### 使用自定义脚本分割日志 如果你更喜欢自己掌控一切,或者需要更灵活的分割策略,写一个 shell 脚本就行。下面这个例子按行数分割,每10万行生成一个带编号的日志文件。 ```bash #!/bin/bash LOG_FILE="/path/to/your/nohup.out" BACKUP_DIR="/path/to/your/log_backup" # 创建备份目录(如果不存在) mkdir -p "$BACKUP_DIR" # 获取当前日期 CURRENT_DATE=$(date +"%Y-%m-%d") # 分割日志文件,每10万行一个文件,使用数字后缀 split -l 100000 --numeric-suffixes --additional-suffix=".log" "$LOG_FILE" "${BACKUP_DIR}/nohup.out." # 清空原始日志文件 > "$LOG_FILE" ``` 把这个脚本保存为 `rotate_nohup.sh`,然后 `chmod +x rotate_nohup.sh` 给它执行权限。接下来,通过 `cron` 定时任务来定期运行它。比如,你想每天凌晨1点执行一次,就在 `/etc/crontab` 或 `/etc/cron.d/rotate_nohup` 文件中添加一行: ```bash 0 1 * * * /path/to/rotate_nohup.sh ``` 这样一来,日志就会按照你的节奏自动分割,再也不用担心 `nohup.out` 变成“巨无霸”了。两种方法各有利弊,`logrotate` 更标准、更省心,自定义脚本则灵活性更高,你可以根据实际需求来选择。
本文转载于:https://www.yisu.com/ask/66628522.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注