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

วิธีแก้ปัญหา Fatal error: Certificate verification: Not trusted บนคำสั่ง lftp

หากท่านใช้งานคำสั่ง lftp เพื่อเชื่อมต่อไปยัง FTP Server และพบว่าไม่สามารถเชื่อมต่อได้...

การคัดลอก Email ระหว่าง IMAP Server

สำหรับท่านที่ประสบปัญหาการโอนย้าย Email จาก Server ที่มี Mail Server ต่างกันหรือ Control Panel...

การตั้งค่าให้ CentOS/RedHat มาใช้เวลาประเทศไทย

ก่อนตั้งเวลาให้ตรวจสอบกอนครับว่าเวลานั้นคลาดเคลื่อนรึเปล่าเพื่อตรวจสอบเวลาปัจจุบันด้วยคำสั่ง date...

ติดตั้ง Mod_Evasive เพื่อป้องกัน DDOS Attack

ssh เข้า root แล้วไปที่ # cd /usr/local/directadmin/custombuild # wget...

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

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