echo 명령이 파일에 한 줄을 쓸 때 스왑 파일을 생성합니까?

echo 명령이 파일에 한 줄을 쓸 때 스왑 파일을 생성합니까?

현재 개인 프로젝트를 진행 중인데 다음과 같이 echo 명령을 사용하여 간단히 로그를 작성하고 싶습니다.

내 질문은 echo 명령이 동시에 동일한 파일에 액세스하는 경우 스왑 파일이 생성됩니까? 아니면 상황을 순서대로 유지하기 위해 echo 명령 내부에 대기열이 있습니까?

예:

$ cat a.txt

aa
bb
cc
$ echo "apple" >> a.txt

aa
bb
cc
apple

답변1

echo명령 보다는리디렉션. >명령의 출력을 파일로 사용하거나 리디렉션하는 경우 >>,껍데기파일을 열고 프로세스에 중간 임시 파일 없이 직접 씁니다. 따라서 두 프로세스가 동시에 동일한 파일에 쓰려고 하면 한 프로세스가 다른 프로세스가 쓴 텍스트를 덮어쓰는 등 예상치 못한 결과가 발생할 수 있습니다.

한 가지 가능한 해결책은 flock주어진 시간에 하나의 프로세스만 파일에 액세스할 수 있도록 하는 것입니다. 그리고 다른 프로세스가 거기에 쓰려고 하면 명령은 flock파일 잠금이 해제될 때까지 기다립니다. 예를 들어:

flock a.txt echo "apple" >> a.txt

관련 정보