nohup命令的输出日志如何分割
作者:归人云淡风轻
时间:2026-07-15
浏览:0
使用nohup命令运行后台任务时,默认将所有输出写入nohup.out文件,导致文件过大,可能撑爆磁盘。可通过logrotate工具配置每日分割、保留7天并压缩,或编写shell脚本按行数分割后配合cron定时任务自动执行,实现日志有效管理,避免空间浪费。
本文目录
好的,作为一位在系统运维领域摸爬滚打多年的老手,我来帮你把这篇关于日志分割的干货,用更接地气的方式重新组织一下。咱们直接开聊。
`nohup` 命令大家都不陌生,它能让程序在后台“悄悄”运行,即使你关掉终端,它也不受影响。但有个小麻烦:默认情况下,它的输出会一股脑儿全写进 `nohup.out` 这个文件里。时间一长,这个文件就会变得非常庞大,既不好查看,也不利于管理。那么,怎么优雅地处理这个问题呢?其实有两种主流方案,一个是用现成的 `logrotate` 工具,另一个是自己写个脚本配合定时任务。

### 使用 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` 更标准、更省心,自定义脚本则灵活性更高,你可以根据实际需求来选择。
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
解决win10运行3DMAX自动重启的方法
2026-10-13 17:08
哔哩哔哩投稿封面上传失败怎么解决
2026-10-13 15:55
漫蛙漫画官网免费漫画入口
2026-10-13 13:19
漫蛙漫画app免费下载安装最新版
2026-10-13 13:18
漫蛙漫画官网登录入口
2026-10-13 13:18
上一篇:
dmesg日志中的CPU问题怎么识别
下一篇:
怎样通过dmesg日志优化磁盘性能
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多
































