Trong một số trường hợp Server bị treo dịch vụ khiến Website không hoạt động, chúng ta có thể dùng cronjob để kiểm tra, nếu Website trả về mã lỗi 502 Bad Gateway thì cho restart nginx, mariadb, php7.4-fpm. Cách thực hiện như sau:
Tham gia kênh Telegram của AnonyViet 👉 Link 👈 |
Auto Restart Nginx, Mariadb, PHP When Website Error 502 Bad Gateway
Tạo file 502.sh với nội dung:
#!/bin/bash CheckURL="https://anonyviet.com" STATUS_CODE=`curl -o /dev/null -m 10 --connect-timeout 10 -s -w %{http_code} $CheckURL` echo $STATUS_CODE if [[ "$STATUS_CODE" == '000' || "$STATUS_CODE" == '502' ]]; then /usr/bin/systemctl restart nginx /usr/bin/systemctl restart mariadb /usr/bin/systemctl restart php7.4-fpm echo "sap web vao luc: $(date)" >> /root/a.txt fi
Giải thích:
- Nếu curl trả về mã lỗi 000 hoặc 502 thì thực hiện 3 lệnh restart nginx, mariadb, php7.4-fpm
- Đồng thời ghi lại Log lúc 3 dịch vụ này khởi động lại vào file a.txt
Hẹn giờ cứ mỗi phút 1 lần cho chạy file 502.sh để kiểm tra
Gõ lệnh để mở cronjob
EDITOR=nano crontab -e
Dán nội dung sau vào cửa sổ Terminal (mỗi phút một lần chạy file /root/502.sh
* * * * * bash /root/502.sh >/dev/null 2>&1
Nhấn Ctrl+O, Enter để lưu và Ctrl+X để thoát
Tut by An0nyViet
Câu hỏi thường gặp
Tôi có thể thay đổi URL kiểm tra trong script không?
Có, bạn hoàn toàn có thể thay đổi URL kiểm tra (CheckURL
) trong file 502.sh
thành URL của website bạn muốn theo dõi.
Nếu script báo lỗi, tôi phải làm gì?
Hãy kiểm tra xem đường dẫn đến các dịch vụ Nginx, Mariadb và PHP7.4-fpm trong script có chính xác không. Kiểm tra xem các dịch vụ này đã được cài đặt và đang hoạt động đúng cách trên hệ thống của bạn chưa. Cuối cùng, kiểm tra quyền truy cập của user chạy script.
Cronjob hoạt động như thế nào và có an toàn không?
Cronjob là một tiện ích lập lịch nhiệm vụ trên hệ thống Linux. Script được chạy tự động theo lịch trình đã đặt (trong trường hợp này là mỗi phút). Việc ghi log vào file `/root/a.txt` giúp bạn theo dõi quá trình khởi động lại. Đảm bảo bạn hiểu rõ cách hoạt động của cronjob và các lệnh trong script trước khi sử dụng.