Không, điều này sẽ không xảy ra đơn giản chỉ vì hai tập lệnh Perl đang thực thi cùng một lúc.
Giải thích có khả năng hơn là bản thân tập lệnh được mở để viết trong khi hệ điều hành đang cố đọc dòng shebang của nó để xác định trình thông dịch sử dụng.
Điều này cũng có thể xảy ra nếu quá trình bên ngoài đang cố nâng cấp hoặc sửa đổi trình thông dịch Perl hoặc một trong các thư viện được chia sẻ tùy thuộc vào. Lưu ý rằng quyền truy cập tệp thường không áp dụng cho các tài khoản superuser, chẳng hạn như root, vì vậy bất kỳ quá trình nào đang chạy như superuser vẫn có thể cố gắng sửa đổi trình thông dịch Perl mặc dù không có số bit +w
được đặt.
(Điều đó nói rằng, hầu hết các công cụ nâng cấp hệ điều hành trên hệ điều hành kiểu POSIX sẽ viết phiên bản nâng cấp của tệp nhị phân sang tệp mới trên cùng hệ thống tệp, đóng tệp đó khi hoàn tất và đổi tên nó ban đầu (một hoạt động nguyên tử) - sao cho inode đính kèm tại /usr/bin/perl
là bản thân nó không bao giờ mở để viết. Như vậy, trên một hệ thống được xử lý tốt, lỗi mà bạn đang thấy không phải là thứ sẽ xuất hiện trong thực tế) .
Bạn có thể sử dụng lệnh fuser
để xem ai có một tập tin mở, hoặc cho kịch bản của bạn hoặc cho người phiên dịch của mình:
$ sudo fuser /usr/bin/perl -uv
USER PID ACCESS COMMAND
/usr/bin/perl: root 16579 f.... (root)python
Nguồn
2012-05-17 15:11:26
(này được cho là nhiều hơn một câu hỏi quản trị hệ thống - nó phụ thuộc vào hệ điều hành ngữ nghĩa cụ thể và không theo bất kỳ cách nào cụ thể cho Perl, hoặc thậm chí là diễn giải ngôn ngữ - vì vậy trong tương lai, Lỗi máy chủ có thể là địa điểm phù hợp hơn) –
tag perl bị xóa – joewhitedelux