我试图弄清楚如何获取多个进程的pid列表:
pidof proc1
1234 4321 7665
pidof proc2
3312 445
并使用所有这些pid,其中有多个进程的多个实例,并将它们组合在一起,然后将其全部馈入kill命令。由于kill可以将多个pid作为输入,因此我希望没有for-each循环就可以做到这一点:
kill -SIGKILL echo $(pidof proc1; pidof proc2)
但是我只是收到“ bash:kill:echo:参数必须是进程或作业ID”的错误消息。 我是bash脚本的新手,所以我敢肯定,我根本没有想到过。
答案 0 :(得分:3)
摆脱echo
。不必要,这是错误消息的原因,因为单词echo
不是PID。
kill -SIGKILL $(pidof hsd-tab; pidof firefox-browser)
更好的pidof
可以使用多个程序名称:
kill -SIGKILL $(pidof hsd-tab firefox-browser)
更好的是,使用pkill
按名称杀死程序。就像kill
+ pidof
。
pkill -SIGKILL hsd-tab firefox-browser
除非绝对必要,否则请尝试避免使用-SIGKILL
或-9
杀死程序。它没有给他们机会彻底关闭计算机。这几乎总是矫kill过正,是一个坏习惯。我会去的:
pkill hsd-tab firefox-browser
答案 1 :(得分:1)
表面上,您需要消除echo
:
kill -SIGKILL $(pidof hsd-tab; pidof firefox-browser)
这应该给您两个(或更多)以空格分隔的PID。我相信kill
抱怨echo
既不是PID也不是工作ID(看起来像%1
等)。
答案 2 :(得分:0)
您不需要data() {
return {
theModel: ""
}
}
。 echo
获取已运行命令的标准输出。