我似乎无法在互联网上找到有关此特定任务的任何示例。
答案1
您可以通过以下方式执行此操作:
for i in $(pgrep -U $UID_OF_ANOTHER_USER); do kill -9 $i; done
或者
pkill -U $UID_OF_ANOTHER_USER
除了终止这些进程之外,您还可以使用第一个进程执行更多操作,例如在终止进程时列出所有进程。
答案2
这是一个简单的解决方案,如果您是 root 则可以使用。
su $uid -c kill SIGSTOP -1
说明:成为那个用户,并杀死一切你能杀死的东西。
所有解决方案都需要 CAP_KILL(终止任何进程的权限),或者是传统的 root(root 拥有此权限)和权限(更改其自己的 uid 的能力),如本解决方案所使用的。
请注意,我发送了 sigstop,这将暂停该过程(按照 ☺ 的要求)。选择您想要的信号。使用 sigkill 作为最后的手段。
答案3
killall -u $user -STOP
如果以另一个用户身份运行并且(对于其他信号)如果没有父进程属于受影响的用户,则这是安全的。
ctrl-alt-delor 的解决方案可能更好(更安全)。不过,这个的优点是可以为您提供真正的退出代码。另一个可能不会两者兼而有之su
,然后kill
自己被杀。