Shell - nohup的重定向namepiped tmp日志文件写入垃圾日志

时间:2017-10-18 11:33:30

标签: linux bash shell named-pipes file-processing

我正在尝试为正在运行的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
  • mkfifo / tmp / log_split_pipe
  • 将应用程序运行为
  

nohup ./application 2&gt;&amp; 1 1&gt; / tmp / log_split_pipe&amp;

问题在于,对于日志文件/home/application/Logs/appname.log我收到的是垃圾文本,而不是该过程写入的正确日志。

任何人都可以帮助解决逻辑问题并纠正吗?

0 个答案:

没有答案