Bash脚本通过PID终止进程

时间:2017-03-13 23:38:20

标签: linux bash

我正在制作一个基本的bash脚本。我试图获得一个PID值并将其存储在一个变量中。我的脚本设置如下:

getPID = pgrep -f app.jar
kill -9 $getPID

然后,我意识到我只是在终端上打印pgrep -f app.jar。所以我试过了:

getPID = $(pgrep -f app.jar)
kill -9 $getPid

仍然没有运气,有没有办法获得pgrep值并将其存储在变量中? 我遇到了很多问题。但仍然没有运气。我也试过这个,不太确定$$做了什么。

pgrep -f app.jar
getPid = $$
kill $getPid

我使用的是Ubuntu 16.04终端。

1 个答案:

答案 0 :(得分:3)

$$代表当前shell的PID,而不是前一个命令的输出。

pgrep的输出捕获到变量中的正确方法是:

getPid=$(pgrep -f app.jar)  # note: no spaces around =
kill $getPid

为了使pgrep找不到匹配的流程更具弹性,请执行以下操作:

getPid=$(pgrep -f app.jar)
[[ $getPid ]] && kill $gitPid

或者您可以一次性使用pkill执行此操作:

pkill -f app.jar

另见: