我已将可执行文件放入 shell 脚本文件 abc.sh 中。现在,我想添加一abc.sh 中的行,以了解它是否在我的脚本启动之前运行和如果是,则杀那个可执行文件。
答案1
您可以使用pgrep
给定进程名称查找可执行文件:
$ pgrep firefox
3212
$ pgrep firef
3212
使用-l
选项在第二列中打印名称:
$ pgrep -l firefox
3212 firefox
使用-x
选项来匹配名称与模式完全匹配的进程。
$ pgrep -x firefox
3212
$ pgrep -x firef
$
当您返回可执行文件的 PID 时,您可以杀死它。pkill
如果您对 PID 的值不感兴趣,您也可以使用命令单步执行此操作:
$ pkill -x firefox
它将杀死给定名称的进程。如果没有这个过程,除了设置 $? 之外什么也不会发生。变量为 1。
答案2
# killall executable_name
或者
# pkill executable_name
会做,但这是一个馊主意。那篇文章很好地解释了原因(本质上,程序名称完全是任意的,您可以轻松地杀死错误的进程),以及如何正确地执行此操作(重组程序,这样您就不必按名称杀死)。