如果可执行文件正在运行,如何检入 shell 脚本?

Jee*_*eet 2 shell shell-script

我在 shell 脚本文件 abc.sh 中放置了一个可执行文件。现在,我想添加一个行此abc.sh,要知道无论是我的脚本开始前运行或不和,如果是,则杀该可执行文件。

Nyk*_*kin 8

您可以使用pgrep给定进程名称查找可执行文件:

$ pgrep firefox
3212
$ pgrep firef
3212
Run Code Online (Sandbox Code Playgroud)

使用-l选项在第二列中打印名称:

$ pgrep -l firefox
3212 firefox
Run Code Online (Sandbox Code Playgroud)

使用-x选项匹配名称与模式完全匹配的进程。

$ pgrep -x firefox
3212
$ pgrep -x firef
$ 
Run Code Online (Sandbox Code Playgroud)

当您返回可执行文件的 PID 时,您可以杀死它。pkill如果您对 PID 的值不感兴趣,也可以使用命令单步完成:

$ pkill -x firefox
Run Code Online (Sandbox Code Playgroud)

它将杀死具有给定名称的进程。如果没有这样的过程,除了设置 $? 变量为 1。


l0b*_*0b0 6

# killall executable_name
Run Code Online (Sandbox Code Playgroud)

或者

# pkill executable_name
Run Code Online (Sandbox Code Playgroud)

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