2012-11-10 28 views
5

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.

Trả lời

3

Có vấn đề là ps -eaf | grep 11211 | grep memcached tôi giả sử là quá trình ID mà luôn luôn thay đổi trên mỗi bắt đầu, vì vậy những gì bạn cần làm là ps -ef | grep memcached

hy vọng rằng giúp

3

Thay vì chạy nó từ cron bạn có thể muốn tạo tập lệnh init thích hợp. Xem /etc/init.d/ để biết ví dụ. Ngoài ra, nếu bạn thực hiện điều này, hầu hết các hệ thống đã có chức năng xử lý hầu hết công việc, như kiểm tra để bắt đầu, khởi động lại, dừng, kiểm tra các quy trình đã chạy, v.v.

Hầu hết các tập lệnh daemon lưu pid vào một tệp đặc biệt (ví dụ: /var/run/foo), và sau đó bạn có thể kiểm tra sự tồn tại của tập tin đó.

Đối với Ubuntu, bạn có thể xem /etc/init.d/skeleton ví dụ tập lệnh mà bạn có thể sao chép.

+0

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

Các vấn đề liên quan