我想启动一个 java 进程...然后通过 bash 脚本检查它是否在 10 秒后仍在运行。
是否有捷径可寻?
答案1
$!
您可以通过使用获取最后执行的命令的 PID 并使用它kill -0
检查它是否仍在运行,从而做得更好。
#!/bin/sh
java &
PID=$!
sleep 10
if kill -0 $PID; then
echo "running"
else
echo "not running"
fi
答案2
我很惊讶没有人提到“jps”。试试吧!
答案3
好吧,创建一个名为 something.sh 的文件,将 program 替换为您的程序的名称:
java -jar program
sleep 10
ps aux| grep program
如果输出为空,则表示它已停止工作。使用 sh something.sh 启动它。
答案4
感谢您的提问。您可能想看看以下示例脚本,看看这是否是您所需要的:
#!/bin/sh
MYPROCESS='your-java-process'
if ($(ps aux | grep $MYPROCESS | grep -v “grep $MYPROCESS″ | wc -l) > 0)
then
echo "$MYPROCESS 服务正在运行,一切正常" >
else
echo "$MYPROCESS 未运行"
fi
下面的“if”语句借助“ps”命令检查进程是否正在运行。在 if 语句中,“ps aux”列出当前正在运行的进程。下一节将找出您的进程,然后我们从获得的进程列表中消除 grep 进程,最后计算实例数。如果结果大于零,则您的进程正在运行,否则没有运行。
希望这可以帮助...