/usr/bin/perl: плохой интерпретатор: текстовый файл занят
Это для меня новое: что указывает эта ошибка?
/usr/bin/perl: bad interpreter: Text file busy
В то время было несколько процессов с интенсивным использованием жестких дисков, но я никогда не видел этого сообщения до — на самом деле, это первый случай, когда я могу вспомнить, что при попытке запустить Perl script. После нескольких секунд ожидания я смог запустить его и с тех пор не видел проблемы, но было бы неплохо объяснить это.
Запуск Ubuntu 9.04, файловая система - ext3.
Ответы
Ответ 1
Я бы предположил, что вы столкнулись с этой проблемой.
Ядро Linux генерирует ошибку bad interpreter: Text file busy
, если ваш Perl script (или любой другой тип script) открыт для записи при попытке выполнить его.
Вы не говорите, что делали процессы с интенсивным использованием диска. Возможно ли, что у одного из них был доступ к script для чтения + записи (даже если он вообще ничего не писал)?
Ответ 2
Если вы используете gnu parallel и видите эту ошибку, возможно, это связано с тем, что вы передаете файл из того же места, в котором вы пишете файл...
Ответ 3
Это происходит потому, что файл script открыт для записи, возможно, с помощью процесса изгоев, который не был завершен.
Решение. Проверьте, какой процесс по-прежнему обращается к файлу, и завершите его.
Например:
# /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
Запустите lsof
(команда списка открытых файлов) в имени script:
# lsof | grep updater.pl
sftp-serv 4416 root 3r REG 144,103 11043 33046751 /root/wordpress_plugin_updater/updater.pl
Убейте процесс PID:
kill -9 4416
Теперь попробуйте запустить script снова. Теперь он работает.
# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
Ответ 4
Это всегда связано с недоступностью интерпретатора perl (/usr/bin/perl). На самом деле, это происходит, когда работает оболочка script или awk или что-то еще на #! строка в верхней части script.
Причиной может быть много вещей... perms, заблокированный файл, файловая система в автономном режиме и вкл. и далее.
Это, очевидно, будет зависеть от того, что происходило в тот момент, когда вы его запускали, когда возникла проблема. Но я надеюсь, что ответ - это то, что вы искали.
Ответ 5
Если script был отредактирован в Windows или любой другой ОС с разными "родными" окончаниями строк, это может быть так же просто, как CR(^M)
"скрывать" в конце первой строки. Vi может быть настроен, чтобы скрыть эту не-родную строку. В моем случае я просто перепечатал оскорбительную первую строку в VI, и ошибка исчезла.