스크립트를 계속 실행하려면 새 파일에 기록하세요.

스크립트를 계속 실행하려면 새 파일에 기록하세요.

지속적인 로그인(예: 초당 2-3페이지)을 제공하는 스크립트가 있습니다. 밑에 안감을 덧대어 사용했어요.

sh myscript.sh > /home/user/mylog

파일을 압축하고 100MB에 도달하면 새 파일을 생성하는 또 다른 스크립트를 실행하고 있습니다.

gzip /home/user/mylog;touch /home/user/mylog

gzip하지만 명령 사이에 일부 로그가 손실되는 것 같습니다. touch로그 손실을 방지하기 위한 모범 사례를 제안할 수 있는 사람이 있습니까?

답변1

파일을 작성하면서 압축하는 대신, 방해가 되지 않는 곳으로 이동한 다음 정적 파일을 압축하세요...

mv /home/user/mylog /home/user/mylog.0; gzip /home/user/mylog.0

스크립트가 실행될 때 로그 파일이 사라지면 자체적으로 생성해야 하므로 손댈 필요가 없습니다.

테스트는 다음과 같습니다. 이 스크립트를 실행하세요... for (( ; ; )); do echo "123" >> test.log; sleep 1; done

그런 다음 파일을 새 이름으로 옮깁니다. mv test.log test.log.0

스크립트가 계속 실행 중이라고 가정하면 새 test.log가 자동으로 생성됩니다.

While 루프에서 이것을 시도해 보세요. 제가 테스트했을 때 효과가 있었습니다.

while true;do
  exec 3>&1 1>>time.logger 2>&1
  date;
  #other stuff...
done

관련 정보