我正在尝试为正在运行的nohup输出创建一个logrotate脚本(没有任何断行 - 在系统中尝试logrotate
包,并且在旋转连续生成的日志文件时观察到几个日志行被错过)。这是我遵循的步骤,
#!/bin/bash log_split_pipe="/tmp/log_split_pipe" log_rename_interval_in_sec=60 log_file="/home/application/Logs/appname.log" semaphore="/home/application/Logs/appname.log.pause" write_log() { while read line do while [ -f $semaphore ] do sleep 1 done echo "$line" >> $log_file done < $log_split_pipe } write_log & log_start_time=$(date +%s) while true do tim_diff=$(expr $(date +%s) - $log_start_time) if [ $tim_diff -ge $log_rename_interval_in_sec ];then touch $semaphore mv /home/application/Logs/appname.log /home/application/Logs/appname-$(date +%Y'_'%m'_'%d'_'%H'_'%M).log rm -rf $semaphore log_start_time=$(date +%s) fi done
nohup ./application 2&gt;&amp; 1 1&gt; / tmp / log_split_pipe&amp;
问题在于,对于日志文件/home/application/Logs/appname.log
我收到的是垃圾文本,而不是该过程写入的正确日志。
任何人都可以帮助解决逻辑问题并纠正吗?