27 command-line sudo execute-command
我只是想知道,例如当我启动qtox时:
qtox &
Run Code Online (Sandbox Code Playgroud)
然后关闭终端,qtox用它关闭。但是在运行时etherape使用:
sudo etherape &
Run Code Online (Sandbox Code Playgroud)
关闭终端不会关闭或对 Etherape 造成任何问题。并且在不同的应用程序之间有不同的行为,有些在终端关闭时关闭,有些则没有,这是怎么回事?为什么有些人关闭而其他人不关闭?我正在使用 GNOME 3.18 运行 Ubuntu GNOME 15.10。
kos*_*kos 36
当您关闭终端时,终端会向外壳发送 SIGHUP 信号;反过来,shell 向其所有子进程组发送 SIGHUP 信号,其中包括后台进程组;
每个进程对信号的反应完全取决于进程:如果进程没有为信号定义处理程序并告诉内核(通过一些系统调用,例如signal()or sigaction())它希望处理它,内核将执行信号的默认处理程序,在 SIGHUP 信号的情况下包括终止进程。
但是,当您使用 运行命令时sudo,sudo进程及其子进程的 UID设置为0(root);通常,除非发送信号的进程的 UID 是0(root) 或与目标进程相同,否则内核会解除信号(即:进程不能向另一个用户拥有的进程发送信号,除非该进程发送信号归root所有);这就是为什么用户运行的进程(例如由终端运行的 Bash 实例)无法 SIGHUPsudo进程,并且最终关闭终端不会影响以sudo.