当使用nohup命令运行程序时,输出文件可能会变得非常大。为了解决这个问题,您可以采取以下方法:
nohup命令时,可以将输出重定向到其他位置,例如/dev/null(丢弃输出)或指定的日志文件。例如:nohup your_command > /dev/null 2>&1 &
这将把标准输出和标准错误都重定向到/dev/null,从而避免输出文件过大。
logrotate工具定期清理输出文件。首先,创建一个logrotate配置文件,例如/etc/logrotate.d/your_command,并添加以下内容:/path/to/your/output/file {
size 100M
rotate 5
compress
missingok
notifempty
create 0640 user group
}
这将使得输出文件在达到100MB时自动分割成多个文件,保留最近的5个分割文件,并对旧文件进行压缩。您可以根据需要调整这些参数。
然后,确保logrotate服务已启用并运行:
sudo systemctl enable logrotate
sudo systemctl start logrotate
split命令分割输出文件:如果您想在程序运行过程中手动分割输出文件,可以使用split命令。例如,以下命令将输出文件每100MB分割成一个新文件:nohup your_command > output.log &
split -b 100M output.log output_part_
这将创建多个名为output_part_aa、output_part_ab等的文件。您可以使用cat命令将这些文件合并回原始输出文件:
cat output_part_* > output.log