K tomu dochází, protože soubor skriptu je otevřen pro zápis, pravděpodobně nepravdivým procesem, který nebyl ukončen.
Řešení:Zkontrolujte, který proces stále přistupuje k souboru, a ukončete jej.
Např.:
# /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
Spusťte lsof
(příkaz list open files) na název skriptu:
# lsof | grep updater.pl
sftp-serv 4416 root 3r REG 144,103 11043 33046751 /root/wordpress_plugin_updater/updater.pl
Zabijte proces pomocí jeho PID:
kill -9 4416
Nyní zkuste skript spustit znovu. Nyní to funguje.
# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
Pokud byl skript upraven ve Windows nebo v jakémkoli jiném OS s různými "nativními" konci řádků, mohl by být tak jednoduchý jako CR(^M)
"skrytí" na konci prvního řádku. Vi vylepšené lze nastavit tak, aby se skrylo toto nepřirozené zakončení řádku. V mém případě jsem jednoduše přepsal závadný první řádek ve VI a chyba zmizela.
Hádám, že jste se s tímto problémem setkali.
Linuxové jádro vygeneruje bad interpreter: Text file busy
chyba, pokud je váš skript v Perlu (nebo jakýkoli jiný typ skriptu) otevřen pro zápis, když se jej pokoušíte spustit.
Neříkáte, co dělaly procesy náročné na disk. Je možné, že jeden z nich měl skript otevřený pro přístup pro čtení a zápis (i když ve skutečnosti nic nepsal)?
To vždy souvisí s tím, že interpret perlu (/usr/bin/perl) je nepřístupný. Ve skutečnosti se to stane, když je spuštěn skript shellu nebo awk nebo co je na #! řádek v horní části skriptu.
Příčinou může být mnoho věcí ... perms, zamčený soubor, souborový systém offline a dál a dál.
Zjevně by to záviselo na tom, co se dělo přesně v okamžiku, kdy jste to spustili, když se problém vyskytl. Ale doufám, že odpověď je to, co jste hledali.