지속적인 로그인(예: 초당 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