En una instancia de Amazon S3 Linux, tengo dos scripts llamados start_my_app
y stop_my_app
que comienzan y se detienen para siempre (que a su vez ejecuta mi aplicación Node.js). Utilizo estos scripts para iniciar y detener manualmente mi aplicación Node.js. Hasta aquí todo bien.
Mi problema: también quiero configurarlo para que start_my_app
se ejecute siempre que el sistema se inicie. Sé que necesito agregar un archivo dentro init.d
y sé cómo vincularlo al directorio apropiado dentro rc.d
, pero no puedo entender lo que realmente necesita ir dentro del archivo que coloco init.d
. Estoy pensando que debería ser solo una línea start_my_app
, pero eso no me ha funcionado.
init.d
solución ( aquí ) debería preferirse a larc.local
solución porque esta última es la herramienta antigua que todavía es utilizable porque la nueva herramienta es compatible con versiones anteriores.Respuestas:
En el archivo que ingresas
/etc/init.d/
debes configurarlo como ejecutable con:Gracias a @meetamit, si esto no se ejecuta, debe crear un enlace simbólico para
/etc/rc.d/
Tenga en cuenta que en Debian más reciente, esto no funcionará ya que su script debe ser compatible con LSB (proporcione, al menos, las siguientes acciones: inicio, detención, reinicio, forzar recarga y estado): https: //wiki.debian .org / LSBInitScripts
Como nota, debe colocar la ruta absoluta de su script en lugar de una relativa, ya que puede resolver problemas inesperados:
Y no olvides agregar encima de ese archivo:
fuente
ln
comando) a un directorio dentrorc.d
/etc/rc.d
carpeta, pero tengo/etc/rcX.d
carpetas (Ie /etc/rc0.d , /etc/rc1.d , /etc/rcS.d ), también hay un archivo /etc/rc.local . Creo que debería crear enlaces simbólicos en una carpeta personalizada como/etc/rc9.d
o en una de las existentes ... (Ubuntu Server 14.04)Establecer un crontab para esto
después de cada inicio, ejecutará el script de prueba.
fuente
@reboot sh $HOME/test.sh
en el crontab está aún más limpiocrontab -l
debería aparecer@reboot sh $HOME/test.sh
para confirmar que realmente se ha configurado.Un enfoque simple es agregar una línea en
/etc/rc.local
:o si desea ejecutar el comando como un usuario especial:
(el signo & comercial sigue el proceso y permite que rc.local continúe ejecutándose)
Si desea un script de inicio completo, la distribución de Debian tiene un archivo de plantilla, por lo que:
y adaptarlo un poco.
fuente
stop_my_app
) tendría que hacerlosudo
, ¿no? Además, me pregunto cuál es exactamente la función del signo de unión (?).&
ejecutar el proceso en segundo planoinit.d
forma de hacer las cosas (su respuesta fue solo una solución más simple para mí en ese momento) . Esta publicación tiene muchas opiniones y votos, por lo que es importante mantener la precisión.Esta es la forma en que lo hago en los sistemas Red Hat Linux .
Ponga su script
/etc/init.d
, propiedad de root y ejecutable. En la parte superior del guión, puede dar una directiva parachkconfig
. Ejemplo, el siguiente script se usa para iniciar una aplicación Java como usuario oracle.El nombre del guión es
/etc/init.d/apex
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 usarchkconfig
para habilitar o deshabilitar el script al inicio:Y puedes usar
service start/stop apex
.fuente
Ingrese
cron
usandosudo
:sudo crontab -e
Agregue un comando para ejecutar al inicio, 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 :
Ejecute su script de prueba sin cron para asegurarse de que realmente funcione.
Asegúrese de guardar su comando en cron, use
sudo crontab -e
Reinicie el servidor para confirmar que todo funciona
sudo @reboot
fuente
sudo
si desea ejecutar un determinado comando durante el inicio utilizando el usuario actual./tmp
??Solo agregue una línea a su crontab.
Asegúrese de que el archivo sea ejecutable:
Para editar el archivo crontab:
Línea que debes agregar:
Así de simple!
fuente
# uname -a Linux accton-xp70a0-26-a1 3.11.10-301.fc20.x86_64 #1 SMP Thu Dec 5 14:01:17 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Otra opción es tener un comando @reboot en su crontab.
No todas las versiones de cron lo admiten, pero si su instancia se basa en la AMI de Amazon Linux, funcionará.
fuente
Puedes hacerlo :
entonces usa este comando
Por favor vea esta página en Cyberciti .
fuente
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 , y arranque el núcleo con el parámetro de línea de comando:
Hacia el final del arranque, el kernel de Linux ejecuta el primer ejecutable de espacio de usuario en la ruta dada.
Varios proyectos proporcionan
init
ejecutables populares utilizados por las principales distribuciones, por ejemplo systemd, y en la mayoría de las distribuciones init bifurcará un montón de procesos utilizados en la operación 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
fuente
Esta solución simple funcionó para mí en una instancia de Amazon Linux que ejecuta CentOS. Edite su
/etc/rc.d/rc.local
archivo y coloque el comando allí. Se menciona en este archivo que se ejecutará después de todos los demás scripts de inicio. Así que ten cuidado al respecto. Así es como me busca el archivo actualmente. . La última línea es el nombre de mi script.fuente
El método más sencillo si todo lo que desea ejecutar es un script simple (o cualquier otra cosa) es si tiene una interfaz gráfica de usuario para usar el sistema> preferencias y luego iniciar aplicaciones.
solo busque el script que desee y listo. (hacer script ejecutable)
fuente
Para Debian 9 ver /ubuntu/228304/how-do-i-run-a-script-at-start-up . Me ha ayudado. Versión corta para Debian 9: agregue comandos (como root) a /etc/rc.local
Probablemente, /path_to_file/filename.sh debería ser ejecutable (creo que sí).
fuente
En Lubuntu tuve que lidiar con la situación opuesta. Skype comenzó a ejecutarse después de arrancar y encontré en
~/.config/autostart/
el archivoskypeforlinux.desktop
. El contenido del archivo es el siguiente:Eliminar este archivo me ayudó.
fuente
$ update-rc.d myScript.sh defaults NN
donde NN es el orden en que debe ejecutarse. 99, por ejemplo, significará que se ejecutará después de 98 y antes de 100.fuente
Trabajando con microservicios Python 3 o shell; usando Ubuntu Server 18.04 (Bionic Beaver) o Ubuntu 19.10 (Eoan Ermine) o Ubuntu 18.10 (Cosmic Cuttlefish) Siempre me gustan estos pasos, y siempre funcionó :
Crear un microservicio llamado p ejemplo "brain_microservice1.service" en mi caso:
Dentro de este nuevo servicio en el que se encuentra:
Dar los permisos:
Otorgue el permiso de ejecución entonces:
Habilitar entonces, esto hará que siempre comience al inicio
Entonces puedes probarlo;
$ sudo reiniciar ahora
Acabado = ÉXITO !!
Esto se puede hacer con la misma secuencia de comandos del cuerpo para ejecutar shell, reaccionar ... secuencia de comandos de inicio de la base de datos ... cualquier código OS ... espero que esto te ayude ...
...
fuente
Me referí a este blog, siempre suena una buena opción
https://blog.xyzio.com/2016/06/14/setting-up-a-golang-website-to-autorun-on-ubuntu-using-systemd/
vim /lib/systemd/system/gosite.service
fuente
¡Aquí hay un método más simple!
Primero: escriba un script de shell y guárdelo en .sh aquí hay un ejemplo
este script deshabilitará el teclado interno al inicio.
Segundo: abra la aplicación "Preferencias de la aplicación de inicio"
ingrese la descripción de la imagen aquí
ingrese la descripción de la imagen aquí
Tercero: haga clic en Agregar. cuarto: en la sección NOMBRE, dale un nombre. quinto: en la sección de comandos, busque su .sh. sexto: edite su sección de comandos para:
séptimo: haga clic en Agregar. ¡Eso es! ¡Terminado!
Ahora confirme reiniciando su PC.
¡salud!
fuente
Sin dolor, el método más fácil y más universal es simplemente ejecutarlo con
~.bash_profile
o~.profile
(si no tiene el archivo bash_profile) .Simplemente agregue el comando de ejecución en la parte inferior de ese archivo y se ejecutará cuando se inicie el sistema.
Tengo este en la parte inferior un ejemplo;
~\Desktop\sound_fixer.sh
fuente
~/.bash_profile
se ejecuta cuando el usuario inicia sesión, no cuando se inicia el sistema. En la pregunta original, la intención es ejecutar un servidor de aplicaciones Node.js al iniciar la máquina. Su solución requeriría que un usuario humano primero inicie sesión en la máquina antes de que se ejecute el servidor Node.js. Y, si algún tipo de problema hace que un reinicio del servidor durante la noche, la aplicación no volver nunca más a la vida hasta los troncos humanos de nuevo.Para algunas personas, esto funcionará:
Simplemente puede agregar el siguiente comando en Sistema → Preferencias → Aplicaciones de inicio :
fuente