如何终止名称中带有空格的进程?

如何终止名称中带有空格的进程?

可以使用以下命令终止 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'

和 一样killallpkill它在每个非嵌入式(和一些嵌入式)Linux 安装中都有,而且它更强大,通常也更可靠(但出于某些原因不太为人所知)。配套实用程序与此pgrep相同,只是它列出 PID 而不是终止。

您可能感兴趣的另一个实用程序是fuserfuser 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

相关内容