[Shell script] Kiểm tra và khởi động lại Service trên Linux Server


Nếu xảy ra một sự cố nào đó trên Linux Server, mà làm dừng 1 dịch vụ (Linux Service) như mysql chẳng hạn. Điều đó có thể khiến cho website của chúng ta bị dừng hoạt động bởi vì HDH Linux không thể tự khởi động lại service. Vì vậy đoạn script (Sử dụng Shell script) được VinaSupport sử dụng để kiểm 1 service có đang hoạt động không và tự động khởi động lại nó khi 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

Đoạn script sẽ tự động được chạy bởi Cron Job mỗi phút để kiểm tra service. Bạn có thể tăng thời gian này lên.

Nguồn: vinasupport.com

 

             
SHARE

Bài viết liên quan

Có 3 bình luận trong bài viết “[Shell script] Kiểm tra và khởi động lại Service trên Linux Server”

  1. SK Nguyen

    Ad ơi !
    Làm giúp mình script tự động tắt và mở lại trình duyệt firefox trên linux (ubuntu, debian..) cứ sau mỗi 1 ngày (hoặc sau 24h).
    Gửi qua email cho mình nha : skynameno1@gmail.com
    Cám ơn ad nhìu ! :))

  2. Quoc

    Mình mới sử dụng thử vps google, hệ điều hành Debian GNU/Linux 9.13 (stretch), PHP 7.4.9
    Mình đã sử dụng cron job, thấp nhất được set là 1 phút
    Ad hướng dẩn làm sao, cách nào ghi dữ liệu tự động vào mysql cứ 1s, 2s/ lần kích hoạt cron.php để nó đổ dữ liệu vào mysql
    Cám ơn

mode_edit Bình luận của bạn

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

account_circle
web