Ejecute el programa automáticamente al iniciar bajo Linux ubuntu [cerrado]

140

Necesitaría ejecutar un programa cada vez que inicie mi ubuntu linux. Así que necesitaría agregarlo a mi lista de programas de inicio. Solo un problema: tendría que hacerlo a través de la terminal.

Matteo Monti
fuente
23
@Flexo Esta respuesta no está presente en ninguno de los enlaces que proporcionó. +1 a esta pregunta y respuesta
Francisco Valdez
2
De hecho, la respuesta aquí se hace referencia a partir de la primera de esas preguntas.
Wilson F
44
Para una forma simple y portátil de hacer esto, puede usar Cron. Ejecute crontab -epara editar el crontab de su usuario; agregue @reboot commandpara ejecutar commanden cada arranque.
appas
2
No sé si es un duplicado o no, pero es el primer hit de Google ...
Vladimir verleg

Respuestas:

178
sudo mv /filename /etc/init.d/
sudo chmod +x /etc/init.d/filename 
sudo update-rc.d filename defaults 

El script ahora debería comenzar en el arranque. Tenga en cuenta que este método también funciona con enlaces duros y enlaces simbólicos ( ln).

Editar

En este punto del proceso de arranque, PATH aún no está configurado, por lo que es fundamental que se usen rutas absolutas en todo momento. PERO, como se señala en los comentarios de Steve HHH, declarar explícitamente la ruta completa del archivo ( /etc/init.d/filename) para el comando update-rc.d no es válida en la mayoría de las versiones de Linux. Según la página de manual de update-rc.d , el segundo parámetro es un script ubicado en /etc/init.d/*. Se actualizó el código anterior para reflejar esto.

Otra edición

También como se señala en los comentarios (por Charles Brandt), /filenamedebe ser un guión de estilo init. También se proporcionó una buena plantilla: https://github.com/fhd/init-script-template .

Otro enlace a otro artículo solo para evitar la posible rotura del enlace (aunque sería triste si GitHub muriera) - http://www.linux.com/learn/tutorials/442412-managing-linux-daemons-with-init-scripts

todavía Otro Editar

Como se señaló en los comentarios (por Russell Yan), esto funciona solo en el modo predeterminado de update-rc.d.

Según el manual de update-rc.d, puede ejecutarse en dos modos, "las máquinas que usan el modo heredado tendrán un archivo /etc/init.d/.legacy-bootordering", en cuyo caso deberá pasar la configuración de secuencia y nivel de ejecución a través de argumentos de línea de comandos.

El argumento equivalente establecido para el ejemplo anterior es

sudo update-rc.d filename start 20 2 3 4 5 . stop 20 0 1 6 .

Dave Lasley
fuente
1
Al igual que para su información, la opción "valores predeterminados" pone un enlace para iniciar el script en los niveles de ejecución 2, 3, 4 y 5. (y pone un enlace para detener en 0, 1 y 6.)
Dave Lasley
55
Acabo de probar esto en Ubuntu Server 12.04 LTS, pero en 12.04 no puede tener el prefijo /etc/init.d. Es sólo sudo update-rc.d filename defaults.
Steve HHH
1
@puk Tanto los enlaces duros como los enlaces simbólicos funcionarán con este método
Dave Lasley
14
Solo quería agregar ese / nombre de archivo en este caso debería ser un script de estilo init. Aquí hay una plantilla para comenzar su propio script de inicio personalizado: github.com/fhd/init-script-template
Charles Brandt
1
Leer esto - unix.stackexchange.com/questions/28679/… - junto con la respuesta será útil
Arjun Sreedharan