Tôi đang chạy tập lệnh shell bên dưới của mình trên một máy mà máy chủ ứng dụng c ++ đang chạy trên cổng 8080 và trong tập lệnh shell tôi đang thực thi một URL và lưu trữ phản hồi đến từ URL đó trong biến DATA.
Nhưng giả sử nếu cùng một máy chủ ứng dụng ngừng hoạt động, thì nó sẽ không thể thực thi URL và sau đó nó sẽ in ra Retrying Again
và ngủ trong 30 giây và sau đó thực hiện lại cùng một url.
#!/bin/bash
HOSTNAME=$hostname
DATA=""
RETRY=15
echo $HOSTNAME
while [ $RETRY -gt 0 ]
do
DATA=$(wget -O - -q -t 1 http://$HOSTNAME:8080/beat)
if [ $? -eq 0 ]
then
break
else
echo "Retrying Again" >&2
# restart the server
let RETRY-=1
sleep 30
fi
done
echo "Server is UP"
Và đây HOSTNAME
là tên máy chủ cục bộ của máy chủ mà tôi đang chạy tập lệnh shell ở trên.
Báo cáo vấn đề:-
Bây giờ những gì tôi đang cố gắng làm là, nếu máy chủ ngừng hoạt động, thì nó sẽ in ra Retrying Again
để sau đó tôi muốn kiểm tra xem cổng 8080
có được mở $HOSTNAME
hay không. Nếu không, điều đó có nghĩa là máy chủ không hoạt động nên tôi muốn khởi động lại máy chủ bằng cách thực hiện lệnh này và sau đó ngủ trong 30 giây như được hiển thị ở trên trong tập lệnh shell.
/opt/app/test/start_stop.sh start
Điều này có thể làm ở đây trong kịch bản shell trên của tôi không?
Tôi đang chạy tập lệnh shell này trên Ubuntu 12.04.
lsof -i :8080 -sTCP:LISTEN
và tôi không nhận được bất cứ điều gì trên bảng điều khiển nhưng nếu tôi đang thử điều nàynetstat -tulpn | grep :8080
thì tôi nhận được quy trình đang chạy trên cổng 8080 tại sao nó lại như vậy?