Linux 使用 pkill 按进程名杀死特定用户

Linux 使用 pkill 按进程名杀死特定用户

我有一个 bash 脚本,在其中运行 pkill 命令来终止正在运行的进程。我的用户名参数定义如下:

username=$(whoami)

我希望能够根据进程名称杀死进程,但也只为当前用户杀死它们。该脚本也将被其他用户使用,因此设置用户名参数,以便该脚本也适用于他们。

谁能告诉我该怎么做?我正在尝试以下操作:

pkill -f -U $username | "testProcess"

这是正确的方法吗?

答案1

testProcess终止为当前用户调用的进程的语法是

pkill -x -U "$(id -u)" testProcess

我使用 u-ingid -u并不是whoami出于习惯,而是因为它id在脚本中更常用whoami。您可以使用预先存在的变量,例如$USER$LOGNAME或类似的变量,具体取决于环境(但请记住,无论您使用什么,都要对扩展加双引号)。

如果您使用-f,则被解释为正则表达式的模式将与所有进程的命令行进行匹配,而不仅仅是命令名称。对于-x,模式需要匹配完整的字符串(在上面的情况下,进程的名称必须精确testProcess,而不是,例如atestProcess2-x与结合-f需要匹配完整的命令行)。

您尝试的命令似乎想要将 的输出传递pkill给名为 的命令testProcess。这可能不是您想要的。

请注意,非 root 用户可能不会向其他用户的进程发出信号,因此除非用户是 root,否则该-U选项及其选项参数并不是严格必需的(除非您想避免“不允许操作”错误)。

相关内容