GNU/Linux >> Znalost Linux >  >> Linux

/usr/bin/perl:špatný interpret:Textový soubor je zaneprázdněn

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.


Linux
  1. Jak opravit „/usr/bin/dirmngr“:Žádný takový soubor nebo adresář

  2. /usr/bin Vs /usr/local/bin Na Linuxu?

  3. Proč /bin/sh ukazuje na /bin/dash a ne /bin/bash?

  1. -bash:/usr/bin/virtualenvwrapper.sh:Žádný takový soubor nebo adresář

  2. Jaké jsou významy /usr/sbin, /usr/local/sbin a /usr/local/bin?

  3. Rozdíl mezi /bin a /usr/bin

  1. Přesunutý obsah /bin do /usr/bin, je možné vrátit zpět?

  2. Měly by weby žít ve /var/ nebo /usr/ podle doporučeného použití?

  3. #!/bin/sh vs #!/bin/bash pro maximální přenositelnost