いいえ、2 つの Perl スクリプトが同時に実行されているという理由だけで、これは起こりません。
より可能性の高い説明は、オペレーティングシステムが使用するインタープリターを決定するためにシバン行を読み取ろうとしている間、スクリプト自体が書き込み用に開かれているということです。
これは、外部プロセスが Perl インタープリター自体、または依存する共有ライブラリーの 1 つをアップグレードまたは変更しようとしている場合にも発生する可能性があります。通常、ファイル許可は root などのスーパーユーザー アカウントには適用されないため、スーパーユーザーとして実行されているプロセスは、+w
ビットが設定されていなくても Perl インタープリターを変更しようとする可能性があることに注意してください。
(とは言っても、POSIX スタイルのオペレーティング システムで動作するオペレーティング システム アップグレード ツールのほとんどは、アップグレードされたバージョンのバイナリを同じファイル システムの新しいファイルに書き込み、完了したらそのファイルを閉じ、元のファイルに名前を変更します (アトミックな操作) -- でアタッチされた inode/usr/bin/perl
自体が書き込み用に開かれないように. そのため、行儀の良いシステムでは、表示されているエラーは実際には発生しないものです)。
このfuser
コマンドを使用して、スクリプトまたはそのインタープリターのファイルを開いているユーザーを確認できます。
$ sudo fuser /usr/bin/perl -uv
USER PID ACCESS COMMAND
/usr/bin/perl: root 16579 f.... (root)python