我想终止 3 个名称不同、毫无共同点的进程。我该怎么做?grep 无法捕获所有进程,因为它们没有任何共同点,或者有没有办法让它捕获所有进程?
答案1
gnome-disks
杀戮和的一个例子gnome-system-monitor
。
kill $(pidof gnome-disks gnome-system-monitor)
我确信我们已经以某种形式在这里有了这种东西,因为这里一定有人在几年前告诉过我类似的事情。
你可以使它更漂亮,但更复杂,就像这样:
# Provide a white space separated list of program names to be killed
programs_to_kill="gnome-disks gnome-system-monitor"
kill $(pidof $programs_to_kill)
答案2
如果你真的想使用查找,您可以使用它pkill
来获取进程 ID (pid)。pkill
greps根据进程名称中的某些模式来终止找到的进程。
您可以使用的语法是:
pkill 'process_name1|other_process|something_else'
你可以使用pgrep
(process grep) 检查要终止的进程pkill
。
语法非常相似:
pgrep -l 'proces_name1|other_process|something_else'
例如,如果我在我的计算机上运行以下命令,我将获得匹配项及其pid
s 的列表:
$ pgrep -l 'clamd|dockerd|snapd'
1952 snapd
1989 clamd
2085 dockerd
2813 dockerd
警告:如果您确实知道完整的进程名称,请使用直播电报的答案:
kill $(pidof process_name1 other_proces)
这样,当您跑步时ssh-agent
就不会因为没有注意听到对方说了什么sshd
而成为受害者。pkill ssh
pgrep -l ssh
答案3
killall name1 && killall name2 && killall name3
答案4
假设您可以按名称选择这三个进程,那么我的解决方案是:
kill `ps awx| grep -E '((ProcessNameA)|(ProcessNameB)|(ProcessNameC))' |grep -v grep| sed "s/ .*$//"`