Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

BASH If service runtime statement

I’m missing the mark on this and I’m just not getting why. I writing a troubleshooter for a custom logstash (But could be any service) deployment we are doing.

The intent:
Check to see if the service has been running longer than 1 minute if has then
Report good then move on to other checks I’m writing
-If not running more than 1-minute wait until 60 seconds on service time and then do checks.
-If service uptime starts over or service is in failed status post error.

SERVICE=logstash
SERVICE_START_TIME=`systemctl status $SERVICE | awk '/Active: active/{print $6" "$7}'`
SERVICE_UP_TIME=$(($(date +%s) - $(date -d "$SERVICE_START_TIME" +%s)))


if systemctl is-active logstash --quiet = active && $SERVICE_UP_TIME > 60s; then
 echo "Logstash is Operating as expected"
elif systemctl is-active logstash = active; then
 echo "Waiting on Logstash to run more than 1 minutes"
wait 60s
else
 echo "Service is NOT Running"
fi

I can get $SERVICE_UP_TIME to return a number but I can’t make it validate against 60 seconds (60s).

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Thoughts, I feel I’m doing this the hard way.

>Solution :

There’s no = argument to systemctl. With the --quiet option it just sets its exit status, there’s nothing to compare with active.

To compare numbers, you need to use [ expression ]. You also shouldn’t have s after 60, and you have to use the -gt option; > is output redirection.

if systemctl is-active logstash --quiet && [ "$SERVICE_UP_TIME" -gt 60 ]; then
    echo "Logstash is Operating as expected"
elif systemctl is-active logstash --quiet; then
    echo "Waiting on Logstash to run more than 1 minutes"
    sleep 60
else
    echo "Service is NOT Running"
fi
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading