매일 새로운 프로세스를 시작하는 크론 작업이 있습니다. 이 프로세스는 5분마다 실행되며 로그 파일에 추가됩니다.
또 다른 크론 작업은 60분마다 실행됩니다. 로그 파일에서 일부 데이터를 가져와서 정리하고 새 로그 파일을 만듭니다. 정리된 로그 파일을 데이터베이스로 가져옵니다. MySQL은 중복 항목을 방지하므로 각각의 새로운 정리 로그 파일의 처음 몇 줄은 무시됩니다.
결국, 정리된 로그 파일 24개와 원본 로그 파일 1개가 남았습니다.
먼저 전처리할 파일 이름을 변경하여 클린 스크립트를 실행하고 필요한 작업을 수행한 다음 삭제하면 첫 번째 크론 스크립트(5번마다 동일한 파일에 로깅)가 발생합니까? 문제가 있습니까?
내 관심사는 다른 cron 작업이 이름을 바꾸려고 시도하는 동안 원본 로그 파일이 기록되고 있다는 것입니다.
운영 체제: 데비안 8
편집: 흥미롭습니다. Cron은 이름이 바뀐 파일에 씁니다.
답변1
파일 이름이 변경되거나 삭제되지 않도록 보호하는 파일 잠금 메커니즘은 필요하지 않습니다. 다른 프로세스가 열려 있는 동안 파일 이름을 바꾸거나 파일을 삭제하는 것은 해당 파일이 적극적으로 데이터를 쓰거나 읽고 있는 경우에도 해롭지 않습니다.
파일을 여는 프로세스에서는 아무런 차이가 없으며 이름이 변경된 파일의 원본 데이터는 물론 파일이 삭제되었다는 사실을 인식하지 못한 채 "삭제된" 파일에도 투명하게 액세스합니다. 실제 삭제는 프로세스가 종료될 때만 발생합니다.