I have a Raspberry PI with Debian. I am also running Domoticz. Domoticz sometimes stops and I have to restart the service. I use this script (domoticz_state_checker.sh):
#!/bin/bash
echo 'Checking if Domoticz is running.'
DomoticzState=`sudo service domoticz.sh status`
#echo $DomoticzState
if [[ $DomoticzState == *"active (running)"* ]]
then
echo 'Domoticz is running. Nothing to do.'
elif [[ $DomoticzState == *"domoticz is not running ... failed!"* ]]
then
echo 'Domoticz is not running. Restarting Domoticz...'
sudo service domoticz.sh restart
echo 'Domoticz restarted.'
elif [[ $DomoticzState == *"active (exited)"* ]]
then
echo 'Domoticz active (exited). Restarting Domoticz...'
sudo service domoticz.sh restart
echo 'Domoticz restarted.'
elif [[ $DomoticzState == *"inactive (dead)"* ]]
then
echo 'Domoticz inactive (dead). Restarting Domoticz...'
sudo service domoticz.sh restart
echo 'Domoticz restarted.'
fi
When I run this script as the user Pi the script works. I run it like this
pi@raspberrypi:~/domoticz/scripts $ /home/pi/domoticz/scripts/domoticz_state_checker.sh
I have created the following with crontab - e to run this as a cronjob
*/5 * * * * pi /home/pi/domoticz/scripts/domoticz_state_checker.sh >> /home/pi/domoticz/scripts/domoticz_state_checker.log 2>&1
In my cron log I see the job being executed:
Jan 10 14:55:01 raspberrypi CRON[23498]: (pi) CMD (pi /home/pi/domoticz/scripts/domoticz_state_checker.sh >> /home/pi/domoticz/scripts/domoticz_state_checker.log 2>&1)
But the script doesn't restart my Domoticz service. The check is done but then I get errors on my if and elif statement. I see the following error in my domoticz_state_checker.log :
Checking if Domoticz is running.
/home/pi/domoticz/scripts/domoticz_state_checker.sh: 7: /home/pi/domoticz/scripts/domoticz_state_checker.sh: [[: not found
/home/pi/domoticz/scripts/domoticz_state_checker.sh: 10: /home/pi/domoticz/scripts/domoticz_state_checker.sh: [[: not found
/home/pi/domoticz/scripts/domoticz_state_checker.sh: 15: /home/pi/domoticz/scripts/domoticz_state_checker.sh: [[: not found
/home/pi/domoticz/scripts/domoticz_state_checker.sh: 20: /home/pi/domoticz/scripts/domoticz_state_checker.sh: [[: not found
When I execute with suo
pi@raspberrypi:~/domoticz/scripts $ sudo /home/pi/domoticz/scripts/domoticz_state_checker.sh
I get the same result as when I run the script via cron
Any ideas what is going wrong here? Under which account is my cronjob executing?
i think to run shell script in cronjob as specific user you should -u
option in crontab.
crontab -u pi -e
and before location file add command bash
or /bin/bash
#<timing> <user> <command>
*/5 * * * * bash /home/pi/domoticz/scripts/domoticz_state_checker.sh >> /home/pi/domoticz/scripts/domoticz_state_checker.log 2>&1
you can find crontab from spool where is located file for all users
cat /var/spool/cron/crontabs/<user>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.