Tôi đã viết một tập lệnh bash để khởi động lại Apache khi nó treo và gửi email cho quản trị viên. Các mã được hiển thị dưới đây. mã sẽ khởi động lại Apache nếu số lượng tiến trình Apache bằng không. Vấn đề là: Apache một số thời gian treo và các quá trình vẫn không phải là số không, vì vậy trong trường hợp này kịch bản sẽ không khởi động lại Apache. Điều cần thiết là: làm cách nào để sửa đổi mã để khởi động lại Apache nếu nó bị treo và các quá trình không phải là 0.bash script để khởi động lại Apache tự động
#!/bin/bash
if [ `pgrep apache2 -c` -le "0" ]; then
/etc/init.d/apache2 stop
pkill -u www-data
/etc/init.d/apache2 start
echo "restarting....."
SUBJECT="Apache auto restart"
# Email To ?
EMAIL="[email protected]"
# Email text/message
EMAILMESSAGE="apache auto restart done"
# send an email using /bin/mail
/bin/mail -s "$SUBJECT" "$EMAIL" "$EMAILMESSAGE"
fi
Fix bệnh, không phải là triệu chứng. Bạn nên hỏi làm thế nào để xác định lý do tại sao apache là treo (có lẽ trong ServerFault) và sau đó sửa chữa mà ... không phải làm thế nào để khởi động lại nó khi nó treo cứng. – Juliano
Tại sao bạn phát minh lại bánh xe ở đây, các tập lệnh khởi động được tìm thấy trong /etc/rc.d hoặc tương tự (tùy thuộc vào cài đặt unix/linux) có khả năng khởi động lại, nhưng sau đó lại kiểm tra nhật ký lỗi của bạn phải khởi động lại máy chủ, thường là /etc/rc.d/3/rc.httpd restart hoặc tương tự ... – t0mm13b
Xin chào. Juliano bạn nói đúng. Tôi đang tìm nguyên nhân gốc rễ của vấn đề nhưng tôi nghĩ kiểu kịch bản này là "phải có" bởi vì nó có thể trong tương lai nó sẽ treo và kịch bản này sẽ tạm thời giải quyết vấn đề. –