Bash: Kiểm tra lên, chạy một quá trình nếu không chạyBash: Kiểm tra lên, chạy một quá trình nếu không chạy
Hi, yêu cầu của tôi là, nếu Memcache server bị down vì lý do nào trong sản xuất, tôi muốn để khởi động lại nó ngay lập tức
Thông thường tôi sẽ khởi động máy chủ Memcache theo cách này với người dùng như ai với nhân rộng như hình dưới đây
memcached -u ai -l 192.168.1.1 -m 2076 -x -v 192.168.1.2
Vì vậy, cho điều này tôi đã thêm một mục trong crontab cách này
(crontab -e)
*/5 * * * * /home/memcached/memcached_autostart.sh
memcached_autostart.sh
#!/bin/bash
ps -eaf | grep 11211 | grep memcached
# if not found - equals to 1, start it
if [ $? -eq 1 ]
then
memcached -u nobody -l 192.168.1.1 -m 2076 -x 192.168.1.2 -v
else
echo "eq 0 - memcache running - do nothing"
fi
Câu hỏi của tôi là bên trong memcached_autostart.sh, cho autorestarting máy chủ memcached, là có bất kỳ vấn đề với kịch bản trên ??
Hoặc
Nếu có bất kỳ phương pháp tốt hơn để đạt được này (thay vì sử dụng cron job) Xin hãy chia sẻ kinh nghiệm của bạn.
Tôi nghĩ đó cũng là một chức năng được gọi là 'daemon' trong '/ etc/init.d/functions'. Điều đó cũng sẽ chăm sóc runfile.pid. Vì vậy, bạn nên cung cấp tệp chức năng từ tập lệnh tự khởi động của mình và gọi chương trình của bạn qua chức năng daemon. – anishsane