¿Hay alguna manera de tener un proceso en segundo plano en ejecución continua que pueda ser controlado por mí (un usuario normal, no root)?
Todo lo que necesito poder hacer es iniciar, detener y reiniciar el proceso. Monitorear por PID y enviar SIGHUP o SIGINT para su terminación está bien. Estoy de acuerdo con usar un script bash complicado, no tiene que ser algo para todo el sistema. Sólo para mí.
También necesito que no se detenga cuando cierre sesión en ssh.
¿Hay alguna manera de hacer esto en RHEL 6.4?
Respuesta1
pantalla o tmux
Seguro que puede iniciar procesos y luego ejecutarlos de forma continua utilizando un multiplexor de terminal como screen o tmux. Los procesos pueden continuar persistiendo en una pantalla o sesión de tmux, y usted puede conectarse/desconectarse de cualquiera de ellas (pantalla o tmux) según sea necesario.
antecedentes
Puede ejecutar cualquier proceso que desee, luego ponerlo en segundo plano y luego desconectarlo de su terminal actual usando el comando disown
.
$ disown -a
Además, si solo desea iniciar un proceso y no tener que ponerlo en segundo plano, disown
puede usar el comando nohup
.
$ nohup myexec &
Cuando salga del shell, myexec
seguirá ejecutándose.
Ejemplo
Iniciar un proceso falso.
$ sleep 12345 &
[1] 24339
$
Asegúrate de que podamos verlo:
$ pgrep -f "sleep 12345"
24339
Pero todavía está conectado a nuestra terminal:
$ jobs
[1]+ Running sleep 12345 &
Así que vamos a disown
hacerlo:
$ disown -a
$ jobs
$
Mira, todavía está funcionando:
$ pgrep -f "sleep 12345"
24339
Ahora cerremos la sesión y volvamos a iniciarla. Mira, todavía está ahí:
$ pgrep -f "sleep 12345"
24339
Puede finalizar este proceso en cualquier momento utilizando medios estándar:
$ pkill -HUP -f "sleep 12345"
$ pgrep -f "sleep 12345"
$
Lo anterior enviará la señal HUP
a un nombre de proceso que coincida con el patrón "dormir 12345". Una doble verificación muestra que ya no está.