Jee*_*eet 2 shell shell-script
我在 shell 脚本文件 abc.sh 中放置了一个可执行文件。现在,我想添加一个行此abc.sh,要知道无论是我的脚本开始前运行或不和,如果是,则杀该可执行文件。
您可以使用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。
# killall executable_name
Run Code Online (Sandbox Code Playgroud)
或者
# pkill executable_name
Run Code Online (Sandbox Code Playgroud)
会这样做,但这是个坏主意。那篇文章很好地解释了原因(本质上,程序名称完全是任意的,您很容易杀死错误的进程),以及如何正确执行(重组程序,这样您就不必按名称杀死)。