Primero las cosas simples/usables
Si desea un script de inicio sin mucho esfuerzo (es decir, manejar el proceso, simplemente tenerlo administrado por el sistema), puede crear un systemd
Servicio. Consulte la respuesta de Greg para obtener una descripción detallada de cómo hacerlo. Luego, puede iniciar el servicio con
systemctl start myserver
Anteriormente hubiera recomendado probar xinetd
o algo similar para una granularidad más fina con respecto a la gestión de recursos y permisos, pero systemd ya cubre eso.
Uso del caparazón
Podrías comenzar tu proceso así:
nohup ./myexecutable &
El &
le dice al shell que inicie el comando en segundo plano, manteniéndolo en la lista de trabajos. En algunos shells, el trabajo se cancela si el shell principal sale usando la señal HANGUP. Para evitar esto, puede iniciar 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 tareas del shell. Para dos shells bien conocidos, esto se puede lograr de la siguiente manera:
golpe:
./myexecutable &
disown <pid>
zsh:
./myexecutable &!
Eliminar su trabajo en segundo plano
Normalmente, el shell imprime el PID del proceso, que luego se puede eliminar 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.