通过使用“ucbps”命令,我能够获得所有PID
$ ucbps
Userid PID CPU % Mem % FD Used Server Port
=========================================================================
512 5783 2.50 16.30 350 managed1_adrrtwls02 61001
512 8896 2.70 21.10 393 admin_adrrtwls02 61000
512 9053 2.70 17.10 351 managed2_adrrtwls02 61002
我想这样做,但不知道怎么做
- variable=通过进程名获取进程的pid。
1.然后使用这个命令kill -9变量。
6条答案
按热度按时间xxhby3vn1#
如果你想基于一个字符串杀死-9(你可能想先尝试kill),你可以这样做:
这将显示您将要杀死的内容(非常非常重要),并在执行时将其通过管道传输到
sh
:bakd9h0s2#
将获取具有给定名称的所有进程的pid。要杀死所有进程,请使用
避免使用变量并直接终止具有给定名称的所有进程的问题
kse8i1jr3#
在一条线上…
vwhgwdsa4#
另一种可能性是使用
pidof
,它通常与大多数发行版一起提供。它将通过使用其名称返回给定进程的PID。通过这种方式,您可以将该信息存储在一个变量中并对其执行
kill -9
。rqqzpn5f5#
使用grep [n]ame删除grep -v名称,这是第一个... Sec使用xargs的方式是如何在那里是错误的rnu无论它是管道,你必须使用-i(交互模式),否则你可能会有问题的命令。
PS axf|grep|grep -v grep|awk '{print“kill -9“$1}'?ps aux|grep [n]ame|#21040;,“那不是更好吗?”
slwdgvem6#
解决方案(完全匹配进程名)
(顺便说一句,对于这个特定的用例,还不如做
pkill -9 -x <process_name>
,但问题是一般如何获取PID)详情
接受的答案(以及所有其他答案)的问题是,没有
-x
的pgrep
(或手动ps | grep
,或出于某种原因,pidof
)将匹配<process_name>
项是 * 子字符串 * 的进程。例如,
pgrep installd
匹配,现在在我的机器(macOS 13.0 22A380 arm64
)上:显然我只想要
33160
,而不是其他的。由于某种原因,
pidof
也有同样的问题:pregp -x
是唯一可行的解决方案(我想,除了用ps | grep
解决方案来处理正则表达式之外)