Solución:
Lo simple / utilizable primero
Si desea un guión de inicio sin mucho esfuerzo, puede usar el upstart
Servicio. Consulte la página de manual correspondiente y /etc/init/*.conf
por ejemplo. Después de crear dicho proceso, puede iniciar su servidor llamando
service myserver start
Si desea más funciones, como limitaciones específicas o administración de permisos, puede probar xinetd
.
Usando el caparazón
Podrías comenzar tu proceso así:
nohup ./myexecutable &
los &
le dice al shell que inicie el comando en segundo plano, manteniéndolo en la lista de trabajos. En algunos shells, el trabajo se mata si el shell padre sale usando la señal HANGUP. Para evitar esto, puede ejecutar su comando usando el nohup
comando, que descarta la señal HANGUP.
Sin embargo, esto no funciona si el proceso llamado vuelve a conectar la señal HANGUP.
Para estar realmente seguro, debe eliminar el proceso de la lista de trabajos del shell. Para dos proyectiles bien conocidos, esto se puede lograr de la siguiente manera:
intento:
./myexecutable &
disown <pid>
zsh:
./myexecutable &!
Matar tu trabajo de fondo
Normalmente, el shell imprime el PID del proceso, que luego se puede matar usando el kill
comando, para detener el servidor. Si su shell no imprime el PID, puede obtenerlo usando
echo $!
directamente después de la ejecución. Esto imprime el PID del proceso bifurcado.
Puede usar Supervisord para administrar su proceso.
Ubuntu? Usar upstart
.
Crea un archivo en /etc/init
para tu trabajo, llamado your-service-name.conf
start on net-device-up
exec /path/to/file --option
Puedes usar start your-service-name
, al igual que: stop
, restart
, status