diff --git a/scripts/restart_services.sh b/scripts/restart_services.sh index ad4e9f3..0516c70 100755 --- a/scripts/restart_services.sh +++ b/scripts/restart_services.sh @@ -4,23 +4,48 @@ source /etc/birdnet/birdnet.conf set -x my_dir=$HOME/BirdNET-Pi/scripts + sudo systemctl stop birdnet_server.service -sudo pkill server.py sudo systemctl stop birdnet_recording.service + services=(web_terminal.service -spectrogram_viewer.service -livestream.service -icecast2.service -extraction.service -chart_viewer.service -birdnet_recording.service -birdnet_log.service) + spectrogram_viewer.service + livestream.service + icecast2.service + extraction.service + chart_viewer.service + birdnet_recording.service + birdnet_log.service) for i in "${services[@]}";do -sudo systemctl restart "${i}" + sudo systemctl restart "${i}" done -until grep 5050 <(netstat -tulpn 2>&1);do -sudo systemctl restart birdnet_server.service -sleep 45 + +sudo systemctl start birdnet_server.service +sleep 5 + +for i in {1..5}; do + # We want to loop here (5*5seconds) until the server is running and listening on its port + systemctl is-active --quiet birdnet_server.service \ + && grep 5050 <(netstat -tulpn 2>&1) \ + && logger "[$0] birdnet_server.service is running" \ + && break + + sleep 5 done + +# Let's check a final time to ensure the server is running +systemctl is-active --quiet birdnet_server.service && grep 5050 <(netstat -tulpn 2>&1) +status=$? + +if (( status != 0 )); then + logger "[$0] Unable to start birdnet_server.service... Looping until it start properly" + + until grep 5050 <(netstat -tulpn 2>&1);do + sudo systemctl restart birdnet_server.service + sleep 45 + done +fi + +# Finally start the birdnet_analysis.service sudo systemctl restart birdnet_analysis.service