¿Cómo ejecutar un script como si se estuviera ejecutando en el arranque?

¿Cómo ejecutar un script como si se estuviera ejecutando en el arranque?

Tengo un script ejecutándose en el momento del arranque, sin embargo, veo errores en el archivo de registro. Cuando lo ejecuto manualmente, funciona bien; probablemente el entorno haya cambiado.

¿Hay alguna manera de ejecutar dicho script en condiciones en las que se ejecuta al arrancar sin reiniciar?

El script se encuentra /etc/init.dcon un enlace simbólico en /etc/rc5.d/S97mounter.sh.

Respuesta1

Podrías ejecutar como root

env - scriptname

Esto borrará su entorno antes de ejecutar el script; sin embargo, también mantendrá su archivo shell. Para borrar el entorno y configurar el shell en sh, haga lo siguiente:

env -i /bin/sh -c scriptname

Esto luego ejecutará el script usando /bin/sh. Sin embargo, esto no simulará completamente el entorno de inicio, ya que no cuenta para los otros servicios que pueden no estar ejecutándose en ese momento.

Encontré una pregunta similar para simular el entorno crontab y hay una solución muy útil publicada pormmccoo.

Al usar esto, puede ejecutarlo en un script y reiniciar el host, luego usar el archivo de entorno para cargar su entorno:

parte de un script de arranque:

env > /var/tmp/bootenv

Luego, en tiempo de ejecución normal, para configurar el mismo entorno de arranque, haga esto:

env - `cat /var/tmp/bootenv` /bin/sh -c scriptname

Respuesta2

Algunas cosas que pueden ser diferentes cuando un programa se inicia a través de una sesión de usuario en lugar de un script de inicio:

  • El programa hereda muchas variables de entorno (incluidas PATH,, HOME…).
  • El programa hereda varios descriptores de archivos, incluido un terminal.
  • Los límites pueden ser diferentes.

Para ejecutar un programa con un entorno mínimo y cerrar los descriptores de archivos estándar, puede usar algo como

env -i PATH=/bin:/usr/bin:/sbin:/usr/sbin myprogram </dev/null >/dev/null 2>/dev/null

Consulte la initpágina de manual u otra documentación de su sistema para ver qué variables de entorno define. Muchos programas destinados a ejecutarse como demonios necesitarán PATHnada más. El PATHvalor anterior es el predeterminado para init en Debian.

Respuesta3

Sin más información sobre lo que hace su secuencia de comandos y los errores que obtiene, es difícil dar una respuesta precisa. Dicho esto, probablemente seaposiblerecrear el entorno, pero probablemente será muy difícil, ya que requerirá desmontar o vincular sistemas de archivos u otras cosas divertidas.

Una alternativa podría ser crear una máquina virtual usando algo comoVirtualBoxoKVMy realice su depuración usando eso, permitiéndole reiniciar la máquina virtual tan a menudo como sea necesario sin necesidad de reiniciar su máquina host.

información relacionada