如何检查 shell 脚本中可执行文件是否正在运行?

如何检查 shell 脚本中可执行文件是否正在运行?

我已将可执行文件放入 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

会做,但这是一个馊主意。那篇文章很好地解释了原因(本质上,程序名称完全是任意的,您可以轻松地杀死错误的进程),以及如何正确地执行此操作(重组程序,这样您就不必按名称杀死)。

相关内容