Me preguntaba, por ejemplo, cuando inicio qtox
con:
qtox &
Y luego cierra Terminal, qtox
cierra con ella. Sin embargo, cuando se ejecuta etherape
usando:
sudo etherape &
Cerrar la Terminal no cierra ni causa ningún problema a Etherape. Y entre diferentes aplicaciones hay diferentes comportamientos, algunos cierran cuando Terminal lo hace, otros no, ¿cómo es que? ¿Por qué algunos cierran cuando otros no? Estoy ejecutando Ubuntu GNOME 15.10 con GNOME 3.18.
qtox
salir cuando cierras el terminal, siempre puedes ejecutarlonohup qtox &
.Respuestas:
Cuando cierra un terminal, el terminal envía una señal SIGHUP al shell; el shell, a su vez, envía una señal SIGHUP a todos sus grupos de procesos secundarios, que incluyen grupos de procesos en segundo plano;
La forma en que cada proceso reaccionará a la señal depende totalmente del proceso: si el proceso no definió un controlador para la señal y le dijo al núcleo (a través de alguna llamada al sistema como
signal()
osigaction()
) que desea manejarlo, el núcleo se ejecuta El controlador predeterminado para la señal, que en el caso de una señal SIGHUP consiste en terminar el proceso.Sin embargo, cuando ejecuta un comando con
sudo
, el UID delsudo
proceso y su proceso secundario se establece en0
(root); en general, a menos que el UID del proceso que envía la señal sea0
(raíz) o el mismo que el proceso de destino, el núcleo descarta la señal (es decir: un proceso no puede enviar señales a un proceso propiedad de otro usuario, a menos que el proceso enviar la señal es propiedad de root); Es por eso que un proceso ejecutado por el usuario, como la instancia de Bash ejecutada por el terminal, no puede APROVECHAR unsudo
proceso y, en última instancia, cerrar un terminal no afecta un proceso iniciado consudo
.fuente
nohup
frente a esos comandos que cierran con SIGHUP :) Upgoatedsudo
.sudo
simplemente ejecuta el comando como otro usuario y no puede enviar señal a los procesos de otros usuarios. Verman 2 kill
.sudo
algún tipo de pobrenohup
?sudo
desudo
por sunohup
efecto secundario, considerado todas las otras desventajas.nohup
, creanohup.out
archivos innecesarios después de él. Más bien use eldisown
comando incorporado.