
기록되는 로그 파일의 크기를 >>
200MB로 제한하는 방법은 무엇입니까?
$ run_program >> myprogram.log
답변1
애플리케이션(예: run_program
)이 로그 파일 크기 제한을 지원하지 않는 경우 외부 애플리케이션이나 스크립트를 사용하여 일반 루프에서 파일 크기를 확인할 수 있습니다.
당신은 또한 사용할 수 있습니다logrotate(8)
로그를 회전하기 위해 size
해당 목적에 사용할 수 있는 매개변수가 있습니다.
이렇게 하면 지정된 크기에 도달하면 로그 파일이 회전됩니다. 크기는 바이트(기본값), 킬로바이트(sizek) 또는 메가바이트(sizem)로 지정할 수 있습니다.
답변2
프로그램이 이 제한보다 큰 추가 파일을 쓸 필요가 없으면 를 사용하여 커널에 이 제한을 알릴 수 있습니다 ulimit
. 명령을 실행하기 전에 다음 명령을 실행하여 현재 셸 세션에서 실행 중인 모든 프로세스에 대해 파일 크기 제한을 200MB로 설정하세요.
ulimit -f $((200*1024))
이렇게 하면 시스템이 보호되지만 파일을 작성하는 프로그램에 간섭이 발생할 수 있습니다. ~처럼Eyazici가 제안했습니다., logrotate
특정 크기나 기간에 도달하면 로그 파일을 정리하도록 설정하는 것이 좋습니다. 오래된 데이터를 폐기하거나 일정 기간 동안 일련의 압축 파일로 보관할 수 있습니다.
답변3
새 파일 시스템 이미지를 생성하고 루프 장치를 사용하여 이를 마운트한 후 해당 파일 시스템에 로그 파일을 넣을 수 있습니다.
dd if=/dev/zero of=./200mb.img bs=1024 count=200000 # create new empty 200MB file
mkfs.ext2 200mb.img # or ext3, or whatever fits your needs
mkdir logs
sudo mount -t ext2 -o loop 200mb.img logs # only root can do '-o loop' by default
run_program >>logs/myprogram.log
메모리가 충분하다면 tmpfs
파일 대신 사용할 수도 있습니다.
답변4
패키지에 도움이 될 수 있는 apache2-utils
유틸리티가 있습니다 rotatelogs
.
요약:
로그 회전 [ -l ] [ -L링크 이름] [-p프로그램] [ -f ] [ -t ] [ -v ] [ -e ] [ -c ] [ -n파일 수] 로그 파일회전 시간|파일 크기(B|K|M|G) [오프셋]
예:
your_program | rotatelogs -n 5 /var/log/logfile 1M
전체 설명서를 읽을 수 있습니다.이 링크.