Saltar al contenido

¿Cómo hago para que mi servidor web Golang se ejecute en segundo plano?

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *