可以使用以下步骤编写一个脚本,以在Linux中自动检测并启动某个进程:

使用 ps 命令检查进程是否在运行,如果没有,则执行重启命令。可以使用以下命令来检查进程是否正在运行:

ps aux | grep <进程名称>

如果进程没有找到,则使用启动命令启动进程,例如:

<启动命令>

可以将这些命令组合成一个 shell 脚本,例如:

#!/bin/bash

while true

do

if pgrep <进程名称> >/dev/null

then

sleep 10

else

echo "<进程名称> is not running, restarting"

<启动命令>

sleep <重启间隔时间>

fi

done

该脚本将无限循环检查进程,如果检测到进程已经停止运行,则会重启进程,并在下一个重启之前等待指定的时间。需要将 "<进程名称>" 替换成实际的进程名称,"<启动命令>" 替换成启动进程的实际命令,"<重启间隔时间>" 替换为重启之间等待的时间。

将脚本保存为可执行文件,例如:restart_process.sh,然后使用以下命令来启动脚本:

./restart_process.sh &

& 符号将脚本放在后台运行,这样可以在关闭 shell 会话时保持脚本运行。

监控skwalking示例

以下是一个简单的 Bash 脚本,可以实现定时监控 SkyWalking OAP Server 进程并自动重启:

#!/bin/bash

while true

do

# 检查程序是否正在运行

pid=`ps -ef | grep org.apache.skywalking.oap.server.starter.OAPServer | grep -v grep | awk '{print $2}'`

if kill -0 ${pid} > /dev/null 2>&1

then

echo "pid=${pid} is running"

sleep 60

else

# 执行重启命令

echo "org.apache.skywalking.oap.server.starter.OAPServerStartUp is not running, restarting"

sh /data/skywalking/apache-skywalking-apm-bin/bin/oapService.sh

sleep 30

fi

done

上述脚本会每隔 30 秒检查一次 oap-server 进程是否正在运行。如果未运行,则执行重启命令。在执行脚本之前,你需要先确认 oap-server 的启动命令,并修改脚本中的相应部分。

可以将该脚本保存为一个文件(例如 restart_oap.sh),并使用 nohup 命令后台运行:

nohup bash restart_oap.sh > /dev/null 2>&1 &

这样,即使你关闭终端窗口,脚本也会继续在后台运行,并定时监控重启 SkyWalking OAP Server。

参考资料

linux-监控服务进程挂掉重启服务-CSDN博客

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: