GNU/Linux >> Linux Esercitazione >  >> Linux

/usr/bin/perl:cattivo interprete:file di testo occupato

Ciò accade perché il file di script è aperto per la scrittura, probabilmente da un processo non autorizzato che non è terminato.

Soluzione:controlla quale processo sta ancora accedendo al file e terminalo.

Ad esempio:

# /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

Esegui lsof (comando list open files) sul nome dello script:

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

Uccidi il processo con il suo PID:

kill -9 4416

Ora prova a eseguire di nuovo lo script. Ora funziona.

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

Se lo script è stato modificato in Windows o in qualsiasi altro sistema operativo con terminazioni di riga "native" diverse, potrebbe essere semplice come un CR(^M) "nascosto" alla fine della prima riga. Vi migliorato può essere impostato per nascondere questa fine di riga non nativa. Nel mio caso ho semplicemente riscritto la prima riga offensiva in VI e l'errore è scomparso.


Immagino tu abbia riscontrato questo problema.

Il kernel Linux genererà un bad interpreter: Text file busy errore se il tuo script Perl (o qualsiasi altro tipo di script) è aperto per la scrittura quando tenti di eseguirlo.

Non dici cosa stavano facendo i processi ad alta intensità di disco. È possibile che uno di loro avesse lo script aperto per l'accesso in lettura e scrittura (anche se in realtà non stava scrivendo nulla)?


Questo ha sempre a che fare con l'inaccessibilità dell'interprete perl (/usr/bin/perl). In effetti, accade quando uno script di shell è in esecuzione o awk o qualunque cosa sia su #! riga all'inizio dello script.

La causa può essere molte cose... permanenti, file bloccato, file system offline e così via.

Ovviamente dipenderebbe da cosa stava accadendo nel momento esatto in cui lo hai eseguito quando si è verificato il problema. Ma spero che la risposta sia quella che stavi cercando.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. /usr/bin Vs /usr/local/bin Su Linux?

  3. Script Bash:pessimo interprete

  4. ./configure :/bin/sh^M :pessimo interprete

  5. Installa i binari in /bin, /sbin, /usr/bin e /usr/sbin, interazioni con --prefix e DESTDIR

Perché /bin/sh punta a /bin/dash e non a /bin/bash??

autorizzazione negata per il compositore in /usr/local/bin/

-bash:/usr/bin/virtualenvwrapper.sh:file o directory non presenti

Spostato il contenuto di /bin in /usr/bin, è possibile annullare?

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?

#!/bin/sh vs #!/bin/bash per la massima portabilità