/ usr / bin / perl: плохой интерпретатор: текстовый файл занят

Это новый для меня: что означает эта ошибка?

  /usr/bin/perl: bad interpreter: Text file busy

в то время было запущено несколько диско-интенсивных процессов, но я никогда не видел этого сообщения раньше-на самом деле, это первый раз, когда я могу вспомнить, что получил ошибку при попытке запустить скрипт Perl. После нескольких секунд ожидания я смог запустить его и с тех пор не видел проблему, но было бы неплохо иметь объяснение этому.

запуск Ubuntu 9.04, файл система с ext3.

5 ответов


Я думаю, вы столкнулись этот вопрос.

ядро Linux будет генерировать bad interpreter: Text file busy ошибка, если ваш скрипт Perl (или любой другой скрипт) открыт для записи при попытке его выполнения.

вы не говорите, что делали диско-интенсивные процессы. Возможно ли, что у одного из них был открыт скрипт для чтения+записи (даже если он ничего не писал)?


это происходит потому, что файл сценария открыт для записи, возможно, изгоев процесса, который не завершился.

решение: проверьте, какой процесс все еще обращается к файлу, и завершите его.

например:

# /root/wordpress_plugin_updater/updater.pl --wp-path=/var/www/virtual/joel.co.in/drjoel.in/htdocs
-bash: /root/wordpress_plugin_updater/updater.pl: /root/perl/bin/perl: bad interpreter: Text file busy

Run lsof (команда Открыть список файлов) на имя скрипта:

# lsof | grep updater.pl
sftp-serv 4416            root    3r      REG            144,103    11043   33046751 /root/wordpress_plugin_updater/updater.pl

убить процесс его PID:

kill -9 4416

теперь попробуйте запустить сценарий еще раз. Теперь работает.

# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from

Если вы используете gnu parallel, и вы видите эту ошибку, то это может быть потому, что вы передаете файл из того же места, где вы записываете файл...


это всегда связано с недоступностью интерпретатора perl (/usr/bin/perl). На самом деле, это происходит, когда сценарий оболочки работает или awk или что-то еще на #! строка в верхней части сценария.

причиной может быть многое ... perms, заблокированный файл, файловая система в автономном режиме и далее.

Это, очевидно, будет зависеть от того, что происходит в тот момент, когда вы запустили его, когда возникла проблема. Но я надеюсь, что ответ-это то, что вы искали.


если скрипт был отредактирован в Windows или любой другой ОС с разными "родными" окончаниями строк, это может быть так же просто, как CR(^M) "прячется" в конце первой строки. Vi улучшено можно настроить до скрыть это не конец строки. В моем случае я просто перепечатал оскорбительную первую строку в VI, и ошибка исчезла.