情况
我已经建立了一个环境,用户可以从多个端点登录并使用tmux
,screen
...所以当他们结束工作时,他们可以注销他们的 ssh 会话,这不会杀死任何终端多路复用器中保存的任何进程,他们可以这样做一个pkill -u ${USER}
或killall -u ${USER}
杀死他们的所有进程,为此我将函数包装在名为 .a 的脚本中fulllogout
。
问题
当跑步pkill -u ${USER}
或killall -u ${USER}
,终止进程可以在终止所有其他进程之前终止自身或其外壳,从而导致某些进程保持活动状态。
在不允许提升权限的情况下如何成功地做到这一点?
答案1
kill -TERM -1
将向它有权这样做的每个进程发送 SIGTERM(除了 pid 1),同样kill -KILL -1
会杀死所有可能的东西。这是在单个系统调用中完成的,因此不能中途杀死自己。