Java 프로그램을 시작하고 시스템 출력을 "출력 파일"에 기록하는 .bash 스크립트를 작성 중입니다.추가기록 목적으로 로그 결과를 "Archive" zip에 저장합니다. 내 현재 스크립트는 다음과 같습니다 ...
outfile=/some/log/directory/templog-$(date +%s).log
archive=/some/log/directory/archive.log.gz
java -cp MyJar.jar Logger 2>&1 | tee $outfile | gzip - | cat - >> $archive
내가 하고 싶은 것은 임시 파일의 크기가 2GB에 도달하면 "outfile2", "outfile3" 등과 같은 새 파일을 생성한 다음 모든 작업이 완료되면 결과로 나오는 "outfile"을 모두 "archive"로 압축하는 것입니다. '.gz 파일(또는 별도의 파일로 압축할 수도 있음)
"rotatelogs"와 "logrotate"를 조사하고 있지만 최선의 선택이 무엇인지 알 수 없는 것 같습니다. 저는 Linux 세계의 초보자이므로 도움을 주시면 대단히 감사하겠습니다.
답변1
당신이 할 수 있는 것은 미리 압축하는 대신 logrotate를 통해 압축할 수 있다는 것입니다. 당신은로그 회전파일은 몇 분마다 cron을 통해 트리거될 수 있으며, 크론은 파일 크기를 확인하고 회전하고 압축합니다.
또는 다음을 사용할 수 있습니다.나뉘다주문하다. 이 명령은 크기나 줄 수를 기준으로 파일을 분할할 수 있습니다. 그러면 다음 명령이 제공됩니다.
java -cp MyJar.jar Logger 2>&1 | tee $outfile | gzip | split -m 2048m archive
tee부터 시작하여 데이터/출력은 gzip으로 이동하여 데이터를 압축하고 해당 데이터는 분할로 이동하여 크기가 2Gb에 도달하면 출력을 분할합니다.