¿Como añadir programas al inicio de Linux?

Antes de nada, voy a explicaros lo que quiero...

Tengo un PC (Debian) con distintos usuarios, y quiero conseguir iniciar programas al inicio del sistema, pero que sean independientes, servidor VNC, FTP... Para poder tener un usuario en el PC y otro conectado a través de VNC por ejemplo.

De igual forma, tengo un VPS con Ubuntu Server en el que me gustaría automatizar un comando como vncserver :1 para no tener que arrancarlo a mano si se cae el servidor.
Supongo que te interesará que se cargue como daemons (demonios! creo que es la forma más sencilla)
Si, supongo que se hace con el init.d pero ni idea...
Buenas,

Respecto a la primera cuestión, no lo pillo, no lo entiendo ...

Sobre la segunda, no se como de fácil será en debian, pero en Fedora/CentOS es tan fácil como agregar una línea en el fichero de configuración del servicio vncserver (en /etc/...) indicando que quieres generar/arrancar un escritorio virtual con "X" configuración (resolución del desktop, usuario con el que arrancarlo, seguridad, etc), configurar, en el perfil del usuario que vas a arrancar el escritorio VNC, los ficheros de arranque del escritorio, arrancar el servicio para probar que funciona y hacer un chkconfig/systemctl para activar el servicio.

No me cuerdo muy bien ya que lo he hecho un par de veces nada más, pero si te puedo decir que en internet tienes cientos de miles de tutoriales para configurar eso mismo en cualquier distribución que se te ocurra (son unos cuantos pasos, lo difícil es configurarlo como uno quiero, eso ya cuesta más).

Un saludo.
Te explico liberhat...

Yo se como añadir una aplicación al inicio de cada usuario, por ejemplo, conky, pero lo que quiero es que la aplicación funcione desde que se inicia el sistema, aunque no haya iniciado sesión ningún usuario.
Para arrancar demonios al inicio del sistema en debian puedes instalarte la aplicación "rcconf". Ejecútalo desde consola y mediante una interfaz ncurses podrás seleccionar que servicios quieres que se inicien en el arranque.

Un saludo!
Buenas,

Ya empiezo a entender lo que pides. Te aconsejo que busques algo de información sobre como funciona el sistema SysV de scripts de inicio del sistema, seguro que de esa forma te quedan las cosas más claras.

1 - Si quieres ejecutar un comando, que no sea muy común o complejo, en el inicio del sistema (independientemente del login), mi consejo es que lo agregues al fichero "/etc/rc.d/rc.local".

Lo que pongas en ese fichero se ejecutará al finalizar el arranque de TODOS los servicios del sistema, independientemente del runlevel en el que lo ejecutes.

2 - Si estamos hablando de un servicio como VNC, vsftpd, httpd, etc ... te aconsejo que busques un script que controle correctamente el inicio y parada de dichos servicios, ya que hacerlos de dicha manera haces un mejor arranque y parada de los servicios y del sistema.

3 - También puedes seguir el ejemplo del script "/etc/init.d/skeleton", rellenando las variables según tu juicio, agregándolo a la carpeta "/etc/init.d/(nombre-que-quieras)" y creando un enlace simbólico a "/etc/rc(runlevel-en-el-que-iniciar).d/", y siguiendo la estructura de Sysv, pones el nombre "S99(nombre-que-quieras)" para que arranque el servicio en ese runlevel, y creas otro enlace simbolico en "/etc/rc0.d/" y "/etc/rc6.d/" en con el nombre de "K01(nombre-que-quieras)" para que se pare al apagar el sistema o reiniciarse.

Desde ya te digo que no es aconsejable gestionar los scripts de SysV de esta forma (ejemplo 3) ya que puedes hacer que el sistema no funcione correctamente al iniciarse o al pararse. Para eso existen aplicaciones que gestiona esos scripts, como por ejemplo la aplicación que dice Zamorate, o el comando chkconfig, y también existen sciprt prefabricados o creados explícitamente para servicios conocidos (ejemplo 2).

Mi consejo es, que si no es algo simple, utilices el ejemplo 1, pero sigo recomendándote encarecidamente que busques algo de información de como funciona SysV antes de tocar nada, como ves, el inicio de sistema puede ser muy enrevesado o fácil según tu necesidad.

Un saludo.
Ok, buscaré mas información acerca de lo que has dicho, la verdad que no tengo mucha idea de como funciona el arranque de Linux.

Los comandos que quiero meter son cosillas como "/usr/bin/mbox.i386 /usr/bin/mbox.cfg" Vamos, ejecutar un programa con un atributo para el archivo de configuración...
Siendo así, no creo que tengas problemas con ponerlo en el rc.local.

Un ejemplo que acabo de encontrar. En esta web comentan un fallo de inicio de un script de vsftpd.

Si lo sigues puedes hacer el script de inicio con lo que comentan:

- Modificas el skeleton (las 6 primeras variables del script).
- Lo colcas en el directorio "/etc/init.d"
- Usas el comando "update-rc.d (nombre-del-script) start 90 2"

Y ya estaría para iniciar automáticamente, pero al apagarse el sistema lo haría por el servicio killall: le daría un tiempo para que el mismo se cerrara, y si en ese tiempo no lo hace realiza un kill -9.

Algo más de info sobre el comando update-rc.d. Nada mejor que unos "EXAMPLES" para entenderlo mejor.

Un saludo.
8 respuestas