without running run leave killing keep closing close after linux go daemon

linux - running - ¿Cómo puedo ejecutar mi servidor web Golang en segundo plano?



nohup (3)

Cosas simples / usables primero

Si desea un script de inicio sin mucho esfuerzo, puede usar el servicio upstart . Consulte la página del manual correspondiente y /etc/init/*.conf para ver ejemplos. 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

Puede comenzar su proceso de esta manera:

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 primario sale utilizando la señal HANGUP. Para evitar esto, puede ejecutar su comando utilizando el comando nohup , 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 del contador de la shell. Para dos conchas bien conocidas esto se puede lograr de la siguiente manera:

intento:

./myexecutable & disown <pid>

zsh:

./myexecutable &!

Matando a su trabajo de fondo

Normalmente, el shell imprime el PID del proceso, que luego se puede kill utilizando el comando kill , 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.

Recientemente completé el tutorial de desarrollo web Wiki ( http://golang.org/doc/articles/wiki/ ). Me divertí muchísimo y me gustaría experimentar más con el paquete net / http.

Sin embargo, noté que cuando ejecuto el wiki desde una consola, el wiki toma el control de la consola. Si cierro el terminal de la consola o detengo el proceso con CTRL + Z , el servidor se detiene.

¿Cómo puedo hacer que el servidor se ejecute en segundo plano? Creo que el término para eso se está ejecutando en un daemon.

Estoy ejecutando esto en Ubuntu 12.04. Gracias por cualquier ayuda.


Podría usar Supervisord para administrar su proceso.


Ubuntu? Use upstart .

Cree un archivo en /etc/init para su trabajo, llamado your-service-name.conf

start on net-device-up exec /path/to/file --option

Puede usar start your-service-name , así como también: stop , restart , status