여러 >>는 2개의 스크립트를 통해 동일한 파일로 리디렉션되며 문장이 중간에 끊어집니다.

여러 >>는 2개의 스크립트를 통해 동일한 파일로 리디렉션되며 문장이 중간에 끊어집니다.

2개의 프로그램이 있는데 둘 다 같은 파일( /tmp/outfile)에 쓰고 있습니다. 또한 cron에 의해 시작되었습니다.

기본적으로 다음과 같은 일이 일어나고 있습니다.

echo -n "1111111111" >> /tmp/outfile

동시에:

echo -n "2222222222" >> /tmp/outfile

출력 파일에 " 11111222222222211111"이 표시됩니다. 이것은 예입니다. 문장 중간에 줄 중 하나가 "잘라지는" 수백 줄에 대해 이야기하고 있지만 간단히 말해서 위와 같은 일이 일어나고 있습니다.

이 동작을 방지하는 방법은 무엇입니까?

답변1

이 문제를 해결하는 두 가지 확실한 방법이 있습니다.

  1. 작업을 직렬화합니다. 두 작업을 동시에 예약하는 대신 작업을 순차적으로 실행하는 스크립트를 예약하세요.

  2. 한 번에 하나의 작업만 쓸 수 있도록 권장되는 잠금 구성표를 사용하여 작업의 쓰기 작업을 잠급니다. 태그된 질문 보기그리고.

두 작업을 백그라운드에서 두 작업을 실행하는 단일 스크립트로 결합할 수 있으며, 작업 자체는 왜곡되거나 혼합된 출력을 방지하기 위해 일종의 잠금 기능을 사용합니다.

관련 정보