2009-09-05 33 views
25

Este es uno nuevo para mí: ¿Qué indica este error?/usr/bin/perl: intérprete incorrecto: archivo de texto ocupado

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

Había un par de los procesos de uso intensivo del disco que se ejecutan en el momento, pero nunca he visto ese mensaje antes de — de hecho, esta es la primera vez que puedo recordar conseguir un error al intentar ejecutar una secuencia de comandos Perl. Después de unos segundos de espera, pude ejecutarlo y no he visto el problema desde entonces, pero sería bueno tener una explicación para esto.

Ejecutando Ubuntu 9.04, el sistema de archivos es ext3.

+0

Ver también SF: http: // serverfault.com/questions/21561/bad-interpreter-text-file-busy – Ether

Respuesta

18

Supongo que se encontró con this issue.

El kernel de Linux generará un error bad interpreter: Text file busy si su script Perl (o cualquier otro tipo de script) está abierto para la escritura cuando intenta ejecutarlo.

No dice qué hacían los procesos intensivos en disco. ¿Es posible que uno de ellos haya abierto la secuencia de comandos para el acceso de lectura + escritura (incluso si en realidad no estaba escribiendo nada)?

+0

Eso suena razonable: estaba trabajando en el guión, y esto sucedió justo cuando lo guardé y luego intenté ejecutarlo. – chris

+3

Probablemente, el "proceso de uso intensivo de disco" no le hizo nada a su script directamente, pero mantuvo el disco lo suficientemente ocupado como para que se parase mientras escribía el script y lo mantuvo abierto durante varios segundos. – hobbs

+0

Eso es lo que estoy pensando, parece tener sentido en cualquier caso. – chris

1

Esto siempre tiene que ver con el intérprete de perl (/ usr/bin/perl) que es inaccesible. De hecho, sucede cuando se ejecuta un script de shell o awk o lo que sea que esté en el #! línea en la parte superior de la secuencia de comandos.

La causa puede ser muchas cosas ... permanentes, archivo bloqueado, sistema de archivos fuera de línea, y así sucesivamente.

Obviamente, dependerá de lo que esté sucediendo en el momento exacto en que lo ejecutó cuando ocurrió el problema. Pero espero que la respuesta sea lo que estabas buscando.

+1

El mensaje de error "archivo de texto ocupado" tiene un significado específico, y no sería causado por ninguno de los problemas que mencionó. – duskwuff

+1

@duskwuff, ¿te importa elaborar? ¿Puedes compartir tu sabiduría con el resto de nosotros? (Por cierto, mi investigación dice exactamente lo que estaba compartiendo). – Rap

+0

@duskwuff el significado específico es _exactamente_ lo que describe esta respuesta. Pruébelo usted mismo - abra/usr/bin/perl para agregar, e intente ejecutar un script de Perl. Sí, el "archivo de texto" es un poco engañoso, pero eso es lo que el error ha sido estandarizado durante décadas. –

0

Si la secuencia de comandos se editó en Windows o en cualquier otro sistema operativo con terminaciones de línea "nativas" diferentes, podría ser tan simple como CR(^M) "ocultarse" al final de la primera línea. Vi mejorado se puede configurar hasta ocultar este final de línea no nativo. En mi caso, simplemente reescribí la primera línea ofensiva en VI y el error desapareció.

2

Si está utilizando paralelo GNU y se ve este error, entonces puede ser porque usted está transmitiendo un archivo en el mismo lugar que está escribiendo el archivo de salida ...

+0

Esto es lo que estaba sucediendo en mi caso. – Kaunteya

2

Esto sucede porque el archivo de script está abierto para la escritura, posiblemente por un proceso deshonesto que no ha terminado.

Solución: compruebe qué proceso sigue accediendo al archivo y finalícelo.

Ej:

# /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 (comando lista de archivos abiertos) en el nombre del script:

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

matar el proceso por su PID:

kill -9 4416 

Ahora intente ejecutar el guion otra vez Ahora funciona.

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