比如我想定时重启 a.jar ,那我就会做一个 SH 脚本,然后做任务计划,定时执行SH脚本;
但是最近发现这样一个问题, a.jar 会卡死,当他卡死的之后,任务计划在执行 SH 时,就没反应了
现在是想,在执行 SH 时,先判断 a.jar 是否运行,没运行,就启动;如果在运行,就杀掉进程,在重新启动。
在线等,该脚本该如何写呢。
比如我想定时重启 a.jar ,那我就会做一个 SH 脚本,然后做任务计划,定时执行SH脚本;
但是最近发现这样一个问题, a.jar 会卡死,当他卡死的之后,任务计划在执行 SH 时,就没反应了
现在是想,在执行 SH 时,先判断 a.jar 是否运行,没运行,就启动;如果在运行,就杀掉进程,在重新启动。
在线等,该脚本该如何写呢。
假设你的a.jar的进程名叫做 ajar
#!/usr/bin/env bash
records=$(ps -eo pid,fname | grep -w ajar)
for record in $records
do
if [[ $record != *[!0-9]* ]]; then
kill ${record}
fi
done
这样可以检测到名为ajar的进程(grep 的-w 开关为精确匹配,防止误杀,进程名最长8位字符,超过8位请抛弃该开关),然后杀掉