在nohup命令中,无法直接限制输出文件的大小。但是,您可以使用logrotate工具或编写一个简单的脚本来实现这个目的。
方法1:使用logrotate
myapp.conf的配置文件,内容如下:/path/to/your/output.log {
size 100M
rotate 5
compress
missingok
notifempty
create 640 user group
}
这里,我们设置了输出文件的最大大小为100M,保留5个旋转日志文件,压缩旧日志文件,如果日志文件丢失则不报错,如果日志文件为空则不进行旋转,以及设置新日志文件的权限和所属用户组。
myapp.conf添加到logrotate的配置目录(通常是/etc/logrotate.d/):sudo cp myapp.conf /etc/logrotate.d/
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文件中。每秒检查一次文件大小。
chmod +x limited_output.sh
nohup运行脚本:nohup ./limited_output.sh &
这将限制output.log文件的大小,并在达到最大值时自动创建新的日志文件。