아니요, 두 개의 Perl 스크립트가 동시에 실행 중이기 때문에 발생하지 않습니다.
더 많은 설명은 운영 체제가 사용하려는 인터프리터를 결정하기 위해 셰번 라인을 읽으려는 동안 스크립트 자체가 쓰기 위해 열려 있다는 것입니다.
이것은 외부 프로세스가 Perl 인터프리터 자체 또는 그것이 의존하는 공유 라이브러리 중 하나를 업그레이드 또는 수정하려고하는 경우에도 발생할 수 있습니다. 파일 사용 권한은 일반적으로 루트와 같은 수퍼 유저 계정에는 적용되지 않으므로 수퍼 유저로 실행중인 모든 프로세스는 +w
비트가 설정되어 있지 않아도 Perl 인터프리터를 수정할 수 있습니다.
(즉, POSIX 스타일의 운영 체제에서 가장 잘 작동하는 운영 체제 업그레이드 도구는 업그레이드 된 버전의 이진 파일을 동일한 파일 시스템의 새 파일에 쓰고 완료되면 해당 파일을 닫은 다음이 파일의 이름을 원래의 (원자 적 연산) - /usr/bin/perl
에 붙어있는 inode는 쓰기 위해 결코 열리지 않습니다. 따라서, 잘 작동하는 시스템에서 여러분이보고있는 오류는 실제로 일어나지 않아야합니다) .
당신은 당신의 스크립트 또는 통역 중, 열린 파일이있는 사용자를 확인하기 위해 fuser
명령을 사용할 수 있습니다 : 당신이 작성하기위한 스크립트를 연 후
$ sudo fuser /usr/bin/perl -uv
USER PID ACCESS COMMAND
/usr/bin/perl: root 16579 f.... (root)python
(이것은 시스템 관리 문제의 거의 틀림없이 더를 - 그것은 OS에 따라 달라집니다 특정 의미론을 가지며 Perl이나 해석 언어와 관련이 없습니다. 서버 장애가 더 적절한 장소 일 수 있습니다. –
태그 perl이 삭제되었습니다. – joewhitedelux