매일 로그 파일에 모든 로깅(출력, 오류 등)을 캡처하는 스크립트가 있습니다.
스크립트는 하루에 10,000번 이상 호출할 수 있으며 최대 3번의 동시 호출이 가능합니다.
현재 제가 겪고 있는 문제는 동시에 실행될 때 로그 기록이 동일한 로그 파일에 서로 기록되는 경우가 있다는 것입니다.
이 문제를 해결하기 위해 클러스터링 및 세마포어와 같은 옵션을 조사해 왔지만 이로 인해 프로세스 자체 실행 시 대기열이 생성될 수 있는데 이는 제 경우에는 필요하지 않습니다.
그래서 다른 유형의 다른 프로세스에서 로깅을 수행하고 다른 프로세스가 로그 파일에 쓰지 않을 때만 로그 파일에 쓸 수 있는지 궁금합니다. 결과적으로 로그 파일은 "깨끗"하고 호출 스크립트는 현재 지연 없이 실행됩니다.
답변1
logger
대부분의 Linux 배포판에서 사용할 수 있는 명령을 사용하면 어떨까요 ? 그것은 같다
logger "this is my log message"
기본적으로 로그를 다음으로 보내야 합니다./var/log/syslog
이를 스크립트에서 호출하면 운영 체제 및 시스템의 표준 로깅 데몬을 통해 로그 항목을 생성하여 관리하려는 동시성 문제를 처리할 수 있습니다.
자세한 내용은 매뉴얼 페이지를 확인하세요 logger
. 로그 수준 등을 포함하여 조정할 수 있는 옵션이 많이 있습니다.
syslog
로그 회전, 압축, 파일 이름 등을 포함하여 특별한 방법으로 이러한 로그를 (일반적으로) 처리하도록 시스템 로거를 구성할 수도 있습니다 .