做网站比较好的软件,外贸自建站如何收款,个人网站推广,陕西建设执业注册中心网站不知道 ECS 因为什么缘故#xff0c;上面安装的 MySQL 服务老是不定期挂掉#xff0c;本来想通过 Linux 得 Cron 配置个半小时的定时检测任务#xff0c;结果一直没有执行#xff0c;因此又尝试使用了 Systemd Timers 进行了重新配置#xff0c;简要做个记录。 Systemd Ti…不知道 ECS 因为什么缘故上面安装的 MySQL 服务老是不定期挂掉本来想通过 Linux 得 Cron 配置个半小时的定时检测任务结果一直没有执行因此又尝试使用了 Systemd Timers 进行了重新配置简要做个记录。 Systemd Timers 是现代 Linux 系统中 CRON 的一个强大替代品。它具有以下优点 1. 更精确的时间控制支持毫秒级精度。 2. 更好的日志管理和错误报告。 3. 可以轻松处理错过的任务例如系统关机时。 4. 与其他 systemd 服务集成更好。 Systemd Timers 由两个主要组件组成 1. Timer 单元.timer 文件定义何时触发任务。 2. Service 单元.service 文件定义要执行的实际任务。 当 Timer 单元触发时它会启动相应的 Service 单元这种分离允许更灵活的配置和管理。 第一步创建需要执行的脚本文件。
这里目的是要检测 MySQL 服务是否启动如果未启动则尝试重启并再次检测脚本路径比如在 /home/shell/mysql_restart.sh 下内容参考如下
#!/bin/bash# 检查MySQL进程是否在运行
echo 检查MySQL进程是否在运行... mysql_restart.log
if ! pgrep -x mysqld /dev/null ; thenecho MySQL进程未运行正在尝试重启服务... mysql_restart.logsystemctl restart mysqldecho MySQL重启命令已执行接下来进入睡眠等待... mysql_restart.log# 稍等一会儿再检查sleep 5# 再次检查MySQL进程echo 睡眠5秒后再次检查MySQL进程是否在运行... mysql_restart.logif pgrep -x mysqld /dev/null ; thenecho MySQL服务重启成功当前运行中。 mysql_restart.logelseecho MySQL服务重启失败请检查日志以获取更多信息。 mysql_restart.logfi
elseecho MySQL进程正在运行。 mysql_restart.log
fi
第二步创建 Service 单元。
在路径 /etc/systemd/system 下创建需要执行脚本的 Service 单元比如 mysql_restart.service内容参考如下
[Unit]
Description定时运行MySQL重启脚本[Service]
Typesimple
ExecStart/home/shell/mysql_restart.sh第三步创建 Timer 单元。
还是在路径 /etc/systemd/system 下创建需要执行服务的 Timer 单元比如 mysql_restart.timer内容参考如下
[Unit]
Description定时运行MySQL重启脚本服务[Timer]
# OnCalendarhoury
# Persistenttrue
OnBootSec1min
OnUnitActiveSec30min[Install]
WantedBytimers.target
其中OnBootSec 表示系统重启后多久开始执行定时任务OnUnitActiveSec 表示当服务单元进入活动状态时多久执行一次定时任务。
第四步加载服务并启动定时任务。 systemctl daemon-reload systemctl enable mysql_restart.timer systemctl start mysql_restart.timer 当然 Cron 定时任务还有很多其它的替代方法来实现比如 Anacron、at 命令等可以自行尝试这里就不细展开说了Good Luck