GNU/Linux >> Tutoriales Linux >  >> Linux

/usr/bin/perl:mal intérprete:archivo de texto ocupado

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

Solución:compruebe qué proceso sigue accediendo al archivo y termínelo.

Por ejemplo:

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

Ejecutar lsof (comando de 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 script de nuevo. Funciona ahora.

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

Si la secuencia de comandos se editó en Windows o en cualquier otro sistema operativo con finales de línea "nativos" diferentes, podría ser tan simple como un CR(^M) "esconderse" al final de la primera línea. Vi mejorado se puede configurar para ocultar esta terminación de línea no nativa. En mi caso, simplemente volví a escribir la primera línea infractora en VI y el error desapareció.


Supongo que te encontraste con este problema.

El kernel de Linux generará un bad interpreter: Text file busy error si su secuencia de comandos Perl (o cualquier otro tipo de secuencia de comandos) está abierta para escritura cuando intenta ejecutarla.

No dice qué estaban haciendo los procesos intensivos en disco. ¿Es posible que uno de ellos tuviera el script abierto para acceso de lectura y escritura (incluso si en realidad no estaba escribiendo nada)?


Esto siempre tiene que ver con que el intérprete de perl (/usr/bin/perl) sea 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 del guión.

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

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


Linux
  1. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  2. /usr/bin Vs /usr/local/bin ¿En Linux?

  3. /usr/bin/ls:/usr/bin/ls:¿No se puede ejecutar el archivo binario?

  4. Linux – ¿Fusionar /usr/bin y /usr/sbin en /bin (gnu/linux)?

  5. ¿Por qué /bin/sh apunta a /bin/dash y no a /bin/bash?

Cómo arreglar '/usr/bin/dirmngr':No existe tal archivo o directorio

Cambiar directorio y ejecutar archivo en un comando

¿Cuál es la diferencia entre #!/usr/bin/env bash y #!/usr/bin/bash?

Diferencia entre /bin y /usr/bin

¿Deberían vivir los sitios web en /var/ o /usr/ según el uso recomendado?

#!/bin/sh vs #!/bin/bash para máxima portabilidad