zhcn 技术 手机 非公開: 如何在服务关闭时自动重新启动服务?

如何在服务关闭时自动重新启动服务?

用于在服务出现故障/崩溃时重新启动服务的 Shell 脚本

由于各种原因,进程崩溃/关闭是很常见的,您可以调查并修复问题,但这可能需要一些时间。

然而,为了减少停机时间并提高可用性,您可以立即做的一件事是在进程出现故障时自动重新启动进程。

让我们在高速公路上实现这一点 – shell 脚本

使用以下 shell 脚本运行 crontab 将每 15 分钟检查一次服务(间隔可调),如果发现服务没有运行则启动它们。是不是很酷

本文提供了两个在服务出现故障时启动服务的示例。

如果您使用的是 CentOS/RHEL 7 或更高版本,另请查看这篇文章,其中介绍了如何使用 systemd 重新启动。

当服务关闭时如何自动重新启动服务?
当服务关闭时如何自动重新启动服务?

如果 MySQL、PHP-FPM 和 Nginx 出现故障,自动重新启动它们

几周前,当我使用EasyEngine将 Geek Flare 迁移到DigitalOcean时,MariaDB 在一周内崩溃了两次。

玛丽亚数据库崩溃了
玛丽亚数据库崩溃了
玛丽亚数据库崩溃了

一大早就崩溃了,宕机了3个多小时,不太好。这是我的博客,所以它不会以任何方式影响我,但我仍然感觉很糟糕。

现在,演出时间到了…

  • 使用 vi 编辑器在所需位置创建文件(对于本演示,它位于 /opt/startifdown.sh 下)。
  • 将以下脚本复制并粘贴到文件中并保存
#!/bin/bash
#Scripts to start services if not running
ps -ef | grep nginx |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php5-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/php5-fpm start > /dev/null
fi
ps -ef | grep mysql |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/mysql start > /dev/null 
fi
  • 将文件权限更改为可执行
chmod 755 startifdown.sh

通过手动测试来验证脚本是否可执行。

您可以停止该服务并检查它是否使用脚本启动。一旦您满意,您可以将其放入 cron 中并每 15 分钟运行一次。

 */1 * * * * /opt/startifdown.sh

如果您需要一些关于更改间隔时间的灵感,请参阅我的 crontab 文章。

现在,这个小脚本将负责在服务崩溃时启动服务,因此您不会有 3 小时的停机时间。

好多了!

当服务关闭时如何自动重新启动服务?
当服务关闭时如何自动重新启动服务?

如果 WebSphere DMGR、Nodeagent 和 JVM 出现故障,则自动重新启动它们

创建包含以下脚本的文件。将其命名为startwasifdown.sh。

 #!/bin/bash
#Scripts to start services if not running
#Specify DMGR Path Here
DMGR=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01
#Specify Profile Path Here
Profile=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ps -ef | grep dmgr |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $DMGR/bin/startManager.sh > /dev/null
fi
ps -ef | grep nodeagent |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $Profile/bin/startNode.sh > /dev/null
fi
ps -ef | grep server1 |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $Profile/bin/startServer.sh server1 > /dev/null
fi

注意:根据您的环境更改路径并添加多个 JVM 的行。

  • 将文件权限更改为可执行
chmod 755 startwasifdown.sh

一旦您手动测试并对其感到满意,您可以将其放入 cron 中并每 15 分钟运行一次或以您方便的方式运行。

 */1 * * * * /opt/ startwasifdown.sh

这只是自动化工作的指南。

喜欢自动化?了解bash shell 脚本

当服务关闭时如何自动重新启动服务?
当服务关闭时如何自动重新启动服务?

通俗易懂地解释了“如何在服务宕机时自动重启服务?”您必须观看的 2 个最佳视频

シャットダウン・スリープ・休止状態 ちゃんと理解して使い分けてますか?【プロが教えるパソコン豆知識】
https://www.youtube.com/watch?v=OKsiuMoXL-o&pp=ygVe44OA44Km44Oz5pmC44Gr44K144O844OT44K544KS6Ieq5YuV5YaN6LW35YuV44GZ44KL44Gr44Gv44Gp44GG44GZ44KM44Gw44KI44 GE4 4Gn44GZ44GLPyZobD1KQQ%3D%3D
【だれも知らない】パソコンが不調な時のシャットダウン!実は間違い!【完全シャットダウンを覚えよ!】
https://www.youtube.com/watch?v=BWG-CtCbwxw&pp=ygVe44OA44Km44Oz5pmC44Gr44K144O844OT44K544KS6Ieq5YuV5YaN6LW35YuV44GZ44KL44Gr44Gv44Gp44GG44GZ44KM44Gw4 4KI 44GE44Gn44GZ44GLPyZobD1KQQ%3D%3D

用于在服务出现故障/崩溃时重新启动服务的 Shell 脚本

由于各种原因,进程崩溃/关闭是很常见的,您可以调查并修复问题,但这可能需要一些时间。

然而,为了减少停机时间并提高可用性,您可以立即做的一件事是在进程出现故障时自动重新启动进程。

让我们在高速公路上实现这一点 – shell 脚本

使用以下 shell 脚本运行 crontab 将每 15 分钟检查一次服务(间隔可调),如果发现服务没有运行则启动它们。是不是很酷

本文提供了两个在服务出现故障时启动服务的示例。

如果您使用的是 CentOS/RHEL 7 或更高版本,另请查看这篇文章,其中介绍了如何使用 systemd 重新启动。

当服务关闭时如何自动重新启动服务?
当服务关闭时如何自动重新启动服务?

如果 MySQL、PHP-FPM 和 Nginx 出现故障,自动重新启动它们

几周前,当我使用EasyEngine将 Geek Flare 迁移到DigitalOcean时,MariaDB 在一周内崩溃了两次。

玛丽亚数据库崩溃了
玛丽亚数据库崩溃了
玛丽亚数据库崩溃了

一大早就崩溃了,宕机了3个多小时,不太好。这是我的博客,所以它不会以任何方式影响我,但我仍然感觉很糟糕。

现在,演出时间到了…

  • 使用 vi 编辑器在所需位置创建文件(对于本演示,它位于 /opt/startifdown.sh 下)。
  • 将以下脚本复制并粘贴到文件中并保存
#!/bin/bash
#Scripts to start services if not running
ps -ef | grep nginx |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/nginx start > /dev/null
fi
ps -ef | grep php5-fpm |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/php5-fpm start > /dev/null
fi
ps -ef | grep mysql |grep -v grep > /dev/null
if [ $? != 0 ]
then
       /etc/init.d/mysql start > /dev/null 
fi
  • 将文件权限更改为可执行
chmod 755 startifdown.sh

通过手动测试来验证脚本是否可执行。

您可以停止该服务并检查它是否使用脚本启动。一旦您满意,您可以将其放入 cron 中并每 15 分钟运行一次。

 */1 * * * * /opt/startifdown.sh

如果您需要一些关于更改间隔时间的灵感,请参阅我的 crontab 文章。

现在,这个小脚本将负责在服务崩溃时启动服务,因此您不会有 3 小时的停机时间。

好多了!

当服务关闭时如何自动重新启动服务?
当服务关闭时如何自动重新启动服务?

如果 WebSphere DMGR、Nodeagent 和 JVM 出现故障,则自动重新启动它们

创建包含以下脚本的文件。将其命名为startwasifdown.sh。

 #!/bin/bash
#Scripts to start services if not running
#Specify DMGR Path Here
DMGR=/opt/IBM/WebSphere/AppServer/profiles/Dmgr01
#Specify Profile Path Here
Profile=/opt/IBM/WebSphere/AppServer/profiles/AppSrv01
ps -ef | grep dmgr |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $DMGR/bin/startManager.sh > /dev/null
fi
ps -ef | grep nodeagent |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $Profile/bin/startNode.sh > /dev/null
fi
ps -ef | grep server1 |grep -v grep > /dev/null
if [ $? != 0 ]
then
       $Profile/bin/startServer.sh server1 > /dev/null
fi

注意:根据您的环境更改路径并添加多个 JVM 的行。

  • 将文件权限更改为可执行
chmod 755 startwasifdown.sh

一旦您手动测试并对其感到满意,您可以将其放入 cron 中并每 15 分钟运行一次或以您方便的方式运行。

 */1 * * * * /opt/ startwasifdown.sh

这只是自动化工作的指南。

喜欢自动化?了解bash shell 脚本

当服务关闭时如何自动重新启动服务?
当服务关闭时如何自动重新启动服务?

通俗易懂地解释了“如何在服务宕机时自动重启服务?”您必须观看的 2 个最佳视频

シャットダウン・スリープ・休止状態 ちゃんと理解して使い分けてますか?【プロが教えるパソコン豆知識】
https://www.youtube.com/watch?v=OKsiuMoXL-o&pp=ygVe44OA44Km44Oz5pmC44Gr44K144O844OT44K544KS6Ieq5YuV5YaN6LW35YuV44GZ44KL44Gr44Gv44Gp44GG44GZ44KM44Gw44KI44 GE4 4Gn44GZ44GLPyZobD1KQQ%3D%3D
【だれも知らない】パソコンが不調な時のシャットダウン!実は間違い!【完全シャットダウンを覚えよ!】
https://www.youtube.com/watch?v=BWG-CtCbwxw&pp=ygVe44OA44Km44Oz5pmC44Gr44K144O844OT44K544KS6Ieq5YuV5YaN6LW35YuV44GZ44KL44Gr44Gv44Gp44GG44GZ44KM44Gw4 4KI 44GE44Gn44GZ44GLPyZobD1KQQ%3D%3D