Shell脚本示例停止执行具有特定UID的所有进程?

Shell脚本示例停止执行具有特定UID的所有进程?

我似乎无法在互联网上找到有关此特定任务的任何示例。

答案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自己被杀。

相关内容