Hôm này tôi chia sẻ bạn một script sẽ tự khởi động lại mysql khi Full RAM. Và trong script này tôi sẽ đặt giá trị là 80% trên tổng số RAM
Bước 1: Tạo script
vi /root/auto-restart-mysql.sh
Sau đó copy script sau và dán vào
#!/bin/bash
# Define the threshold for RAM usage, in this case 80%
threshold=80
# Get the current RAM usage
current=$(free | awk '/Mem/ {printf("%d",$3/$2 * 100.0)}')
# Check if the current RAM usage is higher than the threshold
if [ "${current}" -ge "${threshold}" ]; then
# Restart MySQL service
sudo service mysql restart
echo "MySQL service restarted due to high RAM usage (${current}%)"
else
echo "RAM usage is normal (${current}%)"
fi
Đây là giải thích từng dòng lệnh trong script:
#!/bin/bash
: Đây là shebang, nó chỉ ra rằng script này được thực thi bằng shell bash.
threshold=80
: Đây là giá trị ngưỡng đặt cho việc sử dụng RAM, trong trường hợp này là 80%.
current=$(free | awk '/Mem/ {printf("%d",$3/$2 * 100.0)}')
: Lệnh này sử dụng free để lấy thông tin về RAM và awk để tính toán phần trăm RAM đang sử dụng. Kết quả được lưu trữ trong biến current.
if [ "${current}" -ge "${threshold}" ]; then
: Đây là một điều kiện if, nó kiểm tra xem phần trăm RAM đang sử dụng có lớn hơn hoặc bằng giá trị ngưỡng đặt.
sudo service mysql restart
: Nếu điều kiện trên đúng, script sẽ thực thi lệnh sudo service mysql restart để khởi động lại dịch vụ MySQL.
echo "MySQL service restarted due to high RAM usage (${current}%)"
: Lệnh này sẽ in ra màn hình một thông báo về việc khởi động lại dịch vụ MySQL.
-else
: Nếu điều kiện trong if không đúng, script sẽ thực thi mục đích của else.
echo "RAM usage is normal (${current}%)"
: Lệnh này sẽ in ra màn hình một thông báo về việc RAM đang hoạt đông
Bước 2: Tạo cron
Bạn có thể tạo một cron job để chạy script bằng cách thực hiện các bước sau:
Mở terminal và gõ crontab -e.
Thêm dòng sau vào cuối tệp crontab:
* * * * * /root/auto-restart-mysql.sh
Trên đây là cron job sẽ chạy script mỗi phút. Bạn có thể thay đổi thời gian chạy theo nhu cầu của mình bằng cách sửa các giá trị trước dấu /path/to/script.sh.
Lưu lại và thoát.
Bây giờ, script sẽ được chạy mỗi phút bởi cron job và tự động khởi động lại MySQL nếu RAM đầy.