在我目前的情况下,我有一个在服务器上运行的jar文件。当我需要再次部署它时,我需要停止jar文件并使用shell脚本
运行新的jar文件通过执行java -jar xyz.war &
它执行jar文件。
但要检查pid
我需要使用命令pgrep -f xyz.jar
再次检查
它给出了进程ID。现在我如何存储进程ID,以便我可以在杀死时使用它,然后在部署时运行新的jar。
#!/bin/sh
if pgrep -x xyz.jar > /dev/null
then
echo "Running"
else
echo "Stopped"
cd /folder/location
java -jar xyz.jar &
fi
任何人都可以帮助我如何在if
条件部分
答案 0 :(得分:1)
只需将pid存储在单独的变量中:
apid=$(pgrep -x xyz.war)
然后将其用作$ apid
apid=$(pgrep -x xyz.war)
if [ -n "$apid" ]; then
..............
fi
答案 1 :(得分:1)
以下是您如何使用已经收到的答案。
#!/bin/sh
if apid=$(pgrep -f xyz.jar)
then
echo "Running, pid is $apid"
else
echo "Stopped"
cd /folder/location
java -jar xyz.jar &
fi
你不应该kill -9
这个过程,因为这会阻止Java在终止之前进行任何清理 - 你应该经常只使用kill
,除非你知道代码中存在阻止它工作的错误(甚至可能在使用kill
)发射重型火炮之前尝试常规kill -9
。
从您的问题中不清楚您会在哪种情况下杀死它(当您发现它已经在运行时,您想要杀死它吗?)无论如何,这是一个非常常见的常见问题解答 - 请查找重复项,例如在Stack Overflow bash
tag info page