scripts script resueltos programacion pasar parametros español ejercicios ejemplos comandos linux node.js init.d forever

linux - resueltos - Cómo ejecutar un script de shell en el inicio



scripts linux ejercicios resueltos (15)

En una instancia de Amazon Linux, tengo dos scripts llamados start_my_app y stop_my_app que comienzan y se detienen forever (que a su vez ejecuta mi aplicación node.js). Utilizo estos scripts para iniciar y detener manualmente mi aplicación de nodo. Hasta ahora tan bueno.

Mi problema: también quiero configurarlo para que start_my_app se ejecute cada vez que se start_my_app el sistema. Sé que necesito agregar un archivo dentro de init.d y sé cómo init.d al directorio apropiado dentro de rc.d , pero no puedo averiguar qué es lo que realmente debe ir dentro del archivo que init.d en init.d . Estoy pensando que debería ser solo una línea, como, start_my_app , pero eso no ha funcionado para mí.


Así es como lo hago en sistemas de sombrero rojo.

Ponga su script en /etc/init.d , propiedad de root y ejecutable. En la parte superior de la secuencia de comandos, puede dar una directiva para chkconfig . Ejemplo, el siguiente script se usa para iniciar una aplicación java como usuario oracle.

El nombre del script es /etc/init.d/apex

#!/bin/bash # chkconfig: 345 99 10 # description: auto start apex listener # case "$1" in ''start'') su - oracle -c "cd /opt/apex ; java -jar apex.war > logs/apex.log 2>logs/apex_error.log &";; ''stop'') echo "put something to shutdown or kill the process here";; esac

esto dice que el script debe ejecutarse en los niveles 3, 4 y 5 y la prioridad para iniciar / detener es 99 y 10.

luego, como usuario root, puede usar chkconfig para habilitar o deshabilitar el script en el inicio,

chkconfig --list apex chkconfig --add apex

y puede utilizar el servicio de inicio / parada de vértice


El método más sencillo si solo quieres ejecutar un script simple (o cualquier cosa) es si tienes una interfaz gráfica de usuario para usar las preferencias del sistema y luego las aplicaciones de inicio.

solo navega hasta el script que quieras y ahí lo tienes. (hacer script ejecutable)


En el archivo que pones en /etc/init.d/ tienes que configurarlo como ejecutable con:

chmod +x /etc/init.d/start_my_app

Gracias a @meetamit, si esto no se ejecuta, debe crear un enlace simbólico a /etc/rc.d/

ln -s /etc/init.d/start_my_app /etc/rc.d/

Tenga en cuenta que en la última versión de Debian, esto no funcionará ya que su script debe ser compatible con LSB (incluya, al menos, las siguientes acciones: iniciar, detener, reiniciar, forzar recarga y estado): https://wiki.debian.org/LSBInitScripts

Como nota, debe colocar la ruta absoluta de su script en lugar de una relativa, puede resolver problemas inesperados:

/var/myscripts/start_my_app

Y no te olvides de agregar encima de ese archivo:

#!/bin/sh


Establecer un crontab para esto

#crontab -e @reboot /home/user/test.sh

Después de cada inicio ejecutará el script de prueba.


Ingresa a cron usando sudo :

sudo crontab -e

Agregue un comando para que se ejecute al iniciar, en este caso un script:

@reboot sh /home/user/test.sh

Salvar:

Presione ESC y luego: x para guardar y salir, o presione ESC y luego ZZ (eso es shift + zz)

Prueba prueba prueba

  1. Ejecute su secuencia de comandos de prueba sin cron para asegurarse de que realmente funciona.

  2. Asegúrese de guardar su comando en cron, use sudo crontab -e

  3. Reinicie el servidor para confirmar que todo funciona sudo @reboot


Otra opción es tener un comando @reboot en tu crontab.

No todas las versiones de cron lo admiten, pero si su instancia se basa en la AMI de Amazon Linux, entonces funcionará.



Puedes hacerlo :

chmod +x PATH_TO_YOUR_SCRIPT/start_my_app

entonces usa este comando

update-rc.d start_my_app defaults 100

Por favor, vea esta página en Cyberciti .


Sólo tienes que añadir una línea a tu crontab ..

Asegúrese de que el archivo es ejecutable:

chmod +x /path_to_you_file/your_file

Para editar el archivo crontab:

crontab -e

Línea que tienes que añadir:

@reboot /path_to_you_file/your_file

Que simple


Si quieres poner startup también puedes usar.

Primero mueva su script /etc/init.d luego chmod 777 /etc/init.d/su nombre del script

después de aplicar el siguiente comando

update-rc.d su script por defecto elimina update-rc.d -f su script remove

en el inicio se puede ver que su aplicación se ejecutará.


Un enfoque simple es agregar una línea en /etc/rc.local :

/PATH/TO/MY_APP &

o si quieres ejecutar el comando como root:

su - USER_FOOBAR -c /PATH/TO/MY_APP &

(el signo y el fondo arrastran el proceso y permite que rc.local continúe ejecutándose)

Si desea un script de inicio completo, la distribución debian tiene un archivo de plantilla, así que:

cp /etc/init.d/skeleton /etc/init.d/your_app

Y adaptarlo un poco.


para algunas personas esto funcionará. Simplemente, puede agregar el siguiente comando en Sistema> Preferencias> Aplicaciones de inicio:

bash /full/path/to/your/script.sh


This solución simple me funcionó en una instancia de Amazon Linux que ejecuta CentOS. Edite su archivo /etc/rc.d/rc.local y ponga el comando allí. En este archivo se menciona que se ejecutará después de todos los demás scripts de inicio. Así que ten cuidado al respecto. Así es como se ve el archivo actualmente. . La última línea es el nombre de mi script.


Crea tu propio ejecutable / init

Esto no es lo que quieres, pero es divertido!

Simplemente elija un archivo ejecutable arbitrario, incluso un script de shell , e inicie el kernel con el parámetro de línea de comando:

init=/path/to/myinit

Hacia el final del arranque, el kernel de Linux ejecuta el primer ejecutable de espacio de usuario en la ruta dada.

Varios proyectos proporcionan ejecutables de init populares utilizados por las principales distribuciones, por ejemplo, systemd, y en la mayoría de las distribuciones, inicia un montón de procesos utilizados en el funcionamiento normal del sistema.

Pero podemos secuestrarlo /init para ejecutar nuestros propios scripts mínimos para comprender mejor nuestro sistema.

Aquí hay una configuración mínima reproducible: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/f96d4d55c9caa7c0862991025e1291c48c33e3d9/README.md#custom-init


  • Agregue su script al directorio /etc/init.d/
  • Actualice los niveles de ejecución de rc: $ update-rc.d myScript.sh defaults NN donde NN es el orden en el que debe ejecutarse. 99, por ejemplo, significará que se ejecutará después de 98 y antes de 100.