温馨提示×

如何在nohup命令中限制输出文件大小

小樊
39
2026-01-04 11:33:17
栏目: 编程语言

nohup命令中,无法直接限制输出文件的大小。但是,您可以使用logrotate工具或编写一个简单的脚本来实现这个目的。

方法1:使用logrotate

  1. 创建一个名为myapp.conf的配置文件,内容如下:
/path/to/your/output.log {
    size 100M
    rotate 5
    compress
    missingok
    notifempty
    create 640 user group
}

这里,我们设置了输出文件的最大大小为100M,保留5个旋转日志文件,压缩旧日志文件,如果日志文件丢失则不报错,如果日志文件为空则不进行旋转,以及设置新日志文件的权限和所属用户组。

  1. myapp.conf添加到logrotate的配置目录(通常是/etc/logrotate.d/):
sudo cp myapp.conf /etc/logrotate.d/
  1. 在运行nohup命令时,将输出重定向到/path/to/your/output.log
nohup your_command > /path/to/your/output.log 2>&1 &

现在,当output.log文件达到100M时,logrotate将自动对其进行压缩和归档,并创建一个新的日志文件。

方法2:编写一个简单的脚本

创建一个名为limited_output.sh的脚本,内容如下:

#!/bin/bash

output_file="/path/to/your/output.log"
max_size=100M

while true; do
    if [ $(stat -c%s "$output_file") -gt $(numfmt --from=iec $max_size) ]; then
        mv "$output_file" "${output_file}.$(date +%Y%m%d%H%M%S)"
    fi
    your_command >> "$output_file"
    sleep 1
done

这里,我们检查output.log文件的大小,如果超过100M,将其重命名为带有时间戳的文件。然后,将命令的输出追加到output.log文件中。每秒检查一次文件大小。

  1. 为脚本添加可执行权限:
chmod +x limited_output.sh
  1. 使用nohup运行脚本:
nohup ./limited_output.sh &

这将限制output.log文件的大小,并在达到最大值时自动创建新的日志文件。

0