Tôi có tập lệnh này, tôi đang sử dụng nó để thiết lập công việc CRON để thực thi tập lệnh này, vì vậy nó có thể kiểm tra xem dịch vụ MySQL có đang chạy hay không; nếu không thì nó khởi động lại dịch vụ MySQL:
#!/bin/bash
service mysql status| grep 'mysql start/running' > /dev/null 2>&1
if [ $? != 0 ]
then
sudo service mysql restart
fi
Tôi đã thiết lập công việc cron như.
sudo crontab -e
và sau đó thêm vào,
*/1 * * * * /home/ubuntu/mysql-check.sh
Vấn đề là nó khởi động lại MySQL trên mỗi lần thực thi công việc cron .. ngay cả khi máy chủ đang chạy, nó khởi động lại dịch vụ MySQL, điều chỉnh trong tập lệnh để thực hiện điều đó.
[ ... ]
hoặc test <TEST>
trong Bash. Chúng không được dùng nữa . Sử dụng [[ ... ]]
thay thế. Chỉ sử dụng [ ... ]
và / hoặc test <TEST>
khi [[ ... ]]
là không có sẵn.
if ! (service mysql status | grep 'mysql start/running' &>/dev/null); then sudo service mysql restart; fi
Cái này làm gì, nó khởi động một subshell, trong đó service mysql status | grep 'mysql start/running' &> /dev/null
được chạy, trạng thái return (exit) của subshell đã nói sau đó được chuyển đến câu lệnh if, sau đó kiểm tra xem nó có khác không không, và nếu nó không khác không thì nó chạy then
khối.