在Linux中,你可以使用ps
命令结合grep
和awk
等工具来过滤特定用户的进程
ps -eo user=,-o pid,cmd,%cpu,%mem --sort=-cpu | grep '[u]sers' | awk -v user="username" '$1 == user {print $2}'
这个命令的解释如下:
ps -eo user=,-o pid,cmd,%cpu,%mem --sort=-cpu
:列出所有进程的详细信息,包括用户名(user)、进程ID(pid)、命令(cmd)、CPU占用率(%cpu)和内存占用率(%mem)。-e
选项表示列出所有进程,-o
选项表示自定义输出格式,--sort=-cpu
表示按CPU占用率降序排序。
grep '[u]sers'
:使用正则表达式过滤包含"users"的行。注意,我们在"users"前后加上了方括号[],这样grep会将"users"视为一个普通字符,而不是正则表达式的特殊字符。
awk -v user="username" '$1 == user {print $2}'
:使用awk命令过滤出属于指定用户的进程。-v user="username"
表示将变量user的值设置为"username"。$1 == user
表示如果第一个字段(即用户名)等于指定用户,则输出该行。{print $2}
表示输出第二个字段(即进程ID)。
请将上述命令中的"username"替换为你要过滤的实际用户名。