Script Auto Restart Service หากตรวจพบว่าไม่ทำงาน

บางครั้ง Service ที่เราสั่งให้ทำงานบน Server เช่น httpd ของ Apache หรือ mysql ดันหยุดทำงานไปซะดื้อๆ ซึ่งเป็นผลจาก Service error เอง หรือเกิดโหลดสูงบน Server จน Service ค้างทำให้ระบบที่เราใช้งานมีปัญหาไม่สามารถทำงานได้อย่างปกติ เราสามารถแก้ไขปัญหานี้ได้โดยใช้ Script ตรวจสอบและ Restart service ขึ้นมาใหม่ครับ


#!/bin/bash

# Hostname
URL="http://google.com"

# MySQL
USER="da_admin"
PASSWD=$(grep "^passwd=" /usr/local/directadmin/conf/mysql.conf | cut -d= -f2)

# CMD
WORK="200"
NGINX=$(curl --write-out %{http_code} --silent --output /dev/null $URL)
HTTPD=$(curl --write-out %{http_code} --silent --output /dev/null $URL':8085')
mysql --user="${USER}" --password="${PASSWD}" -e exit 2>/dev/null
SQLSTATUS=`echo $?`

# Auto restart nginx
if [ $NGINX -ne $WORK ]; then
echo Nginx response code $NGINX
/etc/init.d/nginx restart
fi;

# Auto restarrt httpd
if [ $HTTPD -ne $WORK ]; then
echo Nginx response code $NGINX
/etc/init.d/httpd restart
fi;

if [ $SQLSTATUS -ne "0" ]; then
echo MySQL is down!
/usr/bin/killall mysqld
/etc/init.d/mysqld restart
fi;


หลังจากสร้าง Script แล้วก็สามารถนำไปใส่ให้ chmod +x แล้วนำไปใส่ crontab ตั้งเวลาให้ทำงานอัตโนมัติได้เลยครับ

Was this answer helpful?

 Print this Article

Also Read

วิธีหาไฟล์ php.ini ว่าอยู่ที่ไหน

การแก้ไข Server ไม่วาจะเป็นการปรับแต่ง configuration optimize หรือ secure server...

การเพิ่มเวลาการทำงานให้กับ php

บางครั้งคุณต้อง Upload File ที่มีขนาดใหญ่ และพบปัญหาหลุดระหว่างการ Upload File ไปยังเว็บไซต์...

การปิด Public Recursion ของ Bind DNS เพื่อป้องกัน DNS Amplification Attack

DNS Amplification Attack เป็นการโจมตี DDoS รูปแบบนึงที่เป็นที่นิยมแพร่หลายมากในปัจจุบัน...

วิธีใช้งาน Crontab (Cron Jobs) บน Linux Server

Crontab คือคำสั่งที่จะทำงานตามเวลาที่กำหนด...

วิธีแสดงจำนวน inode ที่ใช้งาน

inode คือ จำนวน file และ directory ที่ถูกสร้างขึ้นมาทั้งหมด การที่เครื่อง Server ใดๆ...