Nếu trên máy chủ Linux xảy ra sự cố gì đó và dẫn đến việc dừng một dịch vụ, chẳng hạn như MySQL, thì có thể dẫn đến tình trạng hoạt động của trang web bị gián đoạn. Điều này xảy ra vì hệ điều hành Linux không tự động khởi động lại các dịch vụ khi chúng bị tắt. Để giải quyết vấn đề này, blog sử dụng một đoạn mã script viết bằng Shell script để kiểm tra xem một dịch vụ cụ thể có đang hoạt động không, và tự động khởi động lại nó nếu nó đã bị tắt.
Script tự động kiểm tra và khởi động Service
Tạo 1 script có đường dẫn /opt/scripts/auto-check-service.sh với nội dung như sau:
#!/bin/bash SERVICE=<service> if P=$(pgrep $SERVICE) then echo "$SERVICE is running, PID is $P" else echo "$SERVICE is not running, starting..." # start service if not running systemctl start $SERVICE fi
Với <service> là tên service cần kiểm tra, ví dụ: mysqld, nginx,…
Phân quyền cho script
sudo chmod +x /opt/scripts/auto-check-service.sh
Test thử hoạt động của script
Thiết lập Cron Job kiểm tra Service
Thực hiện command sudo crontab -e trên server để thiết lập 1 job tự động kiểm tra từng phút. (Chạy job với quyền của tài khoản root)
# m h dom mon dow command * * * * * /opt/scripts/auto-check-service.sh >/dev/null 2>&1
Kịch bản sẽ tự động thực hiện bởi Tác vụ Cron hàng phút để kiểm tra dịch vụ. Bạn cũng có thể điều chỉnh thời gian của nó theo ý muốn.