파일을 잠그고 몇 가지 테스트를 실행한 다음 파일을 잠금 해제하고 싶습니다. 어떻게 해야 하나요? 명령줄, Perl 또는 쉘 스크립트를 사용할 수 있습니다.
파일을 잠그려는 이유는 때때로 ftp
Apache 서버에 연결할 때 파일을 삭제할 때 "실행 중인 프로그램이 포함된 파일을 열거나 삭제할 수 없습니다"라는 오류 메시지가 표시되기 때문입니다. ftp
이 오류가 발생하는지 확인하기 위해 delete 명령 대신 move 명령을 사용하여 테스트 하고 싶었습니다 . 파일을 잠그면 이 오류가 발생하는지 테스트하고 싶습니다.
답변1
빠름: 파일 잠금은 일반적으로 (내가 아는 한) 고급 언어에서만 지원됩니다.
Perl 예의 경우 여기에서 시작할 수 있습니다.https://stackoverflow.com/questions/34920/how-do-i-lock-a-file-in-perl또는 Perl 고전 중 하나https://docstore.mik.ua/orelly/perl/cookbook/ch07_12.htm(SSL 인증서 문제 참고) 또는 유사한 문제.
쉘 스크립트의 경우 JdeBP의 설명인 파일이 잠긴 이유를 고려해야 합니다. 답변에 따라 파일의 쓰기 권한을 일시적으로 변경하고, 파일 이름을 바꾸고, 이름이 바뀐 파일을 처리한 후 파일 이름을 다시 변경하고, 복사본을 처리한 다음 원본 파일을 다시 작성하는 등 몇 가지 전략을 고려할 수 있습니다.
답변2
클러스터 명령을 사용할 수 있습니다.양치기 기록 보관소
거기서 배웠어요.https://stackoverflow.com/questions/24388009/linux-flock-how-to-just-lock-a-file
다음은 10초라는 파일을 잠그는 스크립트입니다 2.txt
(링크의 스크립트를 약간 수정함).
exec 3>2.txt # open a file handle; this part will always succeed
flock -x 3 # lock the file handle; this part will block
sleep 10
exec 3>&-