사용방법 >> 로그 파일 크기 제한

사용방법 >> 로그 파일 크기 제한

기록되는 로그 파일의 크기를 >>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

전체 설명서를 읽을 수 있습니다.이 링크.

관련 정보