Soy nuevo en Linux y espero iniciar la aplicación (que alterna un led cada 10 segundos). He escrito el programa de aplicación y funciona bien, pero ahora quiero iniciarlo automáticamente en el arranque.
La documentación aquí dice copiar el script de inicio en el /etc/init.d
directorio y hacer un enlace simbólico al script copiado en el rc.d
directorio.
¿Cuál debería ser la extensión y el nombre de estos archivos de script? ¿Podemos agregar manualmente el enlace simbólico rc.d
o hay algún procedimiento específico para esto?
¿Alguna sugerencia de cómo lograrlo?
start-stop-daemon
maneja mejor (aunque es preferible que el programa mismo demonice). ¿Qué distro está usando? Fuera de los tipos MIME de escritorio, las extensiones de archivo no tienen sentido en * nix y se prefiere que los ejecutables no tengan uno.cron
en su lugar.Respuestas:
Aquí está el extracto de http://www.debian-administration.org/articles/28 que parece responder a su pregunta.
Nota: En el siguiente script de ejemplo, simplemente agregue una llamada a la
start)
sección " " para iniciar realmente su programa. Puede probar la funcionalidad del script sin reiniciar el sistema: llámelo con la ruta completa y proporcione un parámetro de "start
" o "stop
"Aquí va:
Debian utiliza un sistema de inicio tipo Sys-V para ejecutar comandos cuando cambia el nivel de ejecución del sistema, por ejemplo, en el momento del arranque y el apagado.
Si desea agregar un nuevo servicio para comenzar cuando la máquina se inicia, debe agregar el script necesario al directorio
/etc/init.d/
. Muchos de los scripts ya presentes en ese directorio le darán un ejemplo del tipo de cosas que puede hacer.Aquí hay un script muy simple que se divide en dos partes, el código que siempre se ejecuta y el código que se ejecuta cuando se llama con "inicio" o "detención".
Una vez que haya guardado su archivo en la ubicación correcta, asegúrese de que sea ejecutable ejecutando "
chmod 755 /etc/init.d/blah
".Luego, debe agregar los enlaces simbólicos apropiados para que el script se ejecute cuando el sistema se caiga o se active.
La forma más sencilla de hacerlo es usar el comando específico de Debian
update-rc.d
:fuente
systemd
para muchas cosas, incluso para la configuración de arranque. Úselosystemctl
para controlar y configurarsystemd
.La mejor manera es verificar la fuente del paquete de su distribución para un servicio de sistema regular, por ejemplo, para OpenSSH: verá cuáles son las buenas prácticas. Después de todo, una de las razones detrás del código abierto es poder aprender de las fuentes.
fuente
Use Supervisor, un programa efectivo que administra y registra las aplicaciones de inicio con argumentos. Obtenga más información en http://supervisord.org/running.html y (Siga las instrucciones de instalación.
Cree un archivo conf en
/etc/supervisor/conf.d/{PROGRAM_NAME}.conf
y Aquí está el código,Luego ejecute desde la línea cmd:
supervisorctl reload
fuente
Usar
crontab
es mucho más fácil.Se usa
crontab -e
para editar el crontab del usuario.Agregue la siguiente línea al final:
Ejemplos:
@reboot my_script.sh
@reboot python my_script.py arg1 arg2
Finalmente, use
crontab -l
para asegurarse de que su secuencia de comandos se haya agregado a la lista.fuente
Nuevas versiones de linux soporte
systemd
(como dijo @AlexanderShcheblikin). Tiene más funciones y es más portátil que la solución específica de Debian.Por favor lee esta guía realmente genial .
Aquí hay una referencia rápida de la mínimo necesario:
myscript.sh
) con permisos ejecutables.myservice.service
) con la extensión ".service"/etc/systemd/system
con 644 permisos que contiene el comando para ejecutar el script. Por ejemplo,:
sudo systemctl enable myservice
para permitir que se inicie en el arranque.fuente