可以使用以下命令终止 name=example 的进程
killall -9 示例
如何终止包含空格的以下命令的多个实例?
“valgrind --tool = lackey./testcases/kernel/syscalls/waitpid/waitpid03”
以下命令返回valgrind --tool=lackey ./testcases/kernel/syscalls/waitpid/waitpid03: 没有此文件或目录
killall -9 “valgrind --tool = lackey ./testcases/kernel/syscalls/waitpid/waitpid03”
答案1
killall valgrind
将终止所有valgrind
进程,无论参数是什么。如果您只想终止命令行正好为 的进程valgrind --tool=lackey ./testcases/kernel/syscalls/waitpid/waitpid03
,则可以使用pkill
:
pkill -xf 'valgrind --tool=lackey ./testcases/kernel/syscalls/waitpid/waitpid03'
和 一样killall
,pkill
它在每个非嵌入式(和一些嵌入式)Linux 安装中都有,而且它更强大,通常也更可靠(但出于某些原因不太为人所知)。配套实用程序与此pgrep
相同,只是它列出 PID 而不是终止。
您可能感兴趣的另一个实用程序是fuser
:fuser testcases/kernel/syscalls/waitpid/waitpid03
列出打开了指定文件的进程,fuser -k
并向这些进程发送信号。当您不想发送信号时,lsof
这是更强大的替代方案fuser
(显示更多内容,具有更多过滤器)。
答案2
您不需要提供killall
完整的命令行;killall valgrind
对于您来说这就足够了。
~$ perl -e 'sleep 10000' &
[1] 3586
~$ ps ax | grep perl
3586 pts/3 S 0:00 perl -e sleep 10000
3588 pts/3 S+ 0:00 grep perl
~$ killall perl
[1]+ Terminated perl -e 'sleep 10000'
~$
答案3
除了其他好的解决方案外,您还可以安装 htop,然后通过滚动查看正在运行的进程列表并使用 F9(终止)键来终止您想要的进程。好吧,这不是硬核的命令行东西,但它确实有效!
答案4
killall valgrind
通常不起作用,因为实际的 valgrind 可执行文件有另一个名称。此名称是 memcheck-amd64-linux 或类似名称,具体取决于您使用的 valgrind 工具等。但是 ps 报告的进程名称不是可执行文件名称,而是命令行中的第一个条目。这会引起混淆。我已将此报告给 psmisc:https://github.com/acg/psmisc/issues/1