脚本定期检查服务是否正常运行

小标题:Shell 脚本检查服务运行状态


以 MySQL 服务为例,假设我们想定期检查该服务是否正常运行,如果运行异常则重启该服务,从而确保服务尽快恢复。

在 Linux 系统中,如果我们想查看某个服务的运行状态,可以使用 systemctl status 命令,例如:

$ systemctl status mysql
● mariadb.service - MariaDB 10.3.34 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-08-13 19:34:07 CST; 2h 32min ago
     ......

如果 Active 一栏显示 “active”,则表示服务运行正常。

如果你只想关心 Active 状态,还可以使用 systemctl is-active 命令,这样返回的结果会更加简洁。

$ systemctl is-active mysql
active

为了实现文章开头的需求,我们可以编写一个 Shell 脚本程序 keep_mysql_active.sh,内容如下:

#!/bin/bash

function keep_mysql_service_active()
{
    result=`systemctl is-active mysql`

    # result: active or inactive
    if [[ $result = "active" ]]; then
        echo "[-] MySQL is active"
        exit
    fi

    echo "[-] MySQL is inactive"
    echo "[-] Restart now"
    sudo systemctl restart mysql
    echo "[-] Done!"
}

function main()
{
    keep_mysql_service_active
}

main

如果 MySQL 服务为 active 状态,则结束本次检测;如果为 inactive 状态,则尝试重启 MySQL 服务。

为了让该程序自动定期运行,例如每隔一分钟检查一次,我们可以使用 Linux 定时任务管理。打开一个终端,输入 crontab -e 命令,编辑 cron 任务规划列表,在末尾加上如下一行:

* * * * * /opt/keep_mysql_active.sh

这里假设 keep_mysql_active.sh 脚本文件存放于 /opt 目录,并且具有可执行权限。

这样,我们就实现了 MySQL 服务的自动定期检测和重启的功能!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏马潜行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值