如果服务未运行,请重新启动Raspberry Pi

时间:2016-08-22 20:52:45

标签: python raspberry-pi crontab

我正从Raspberry Pi运行Bitorrent Sync。偶尔会出于某种原因离线。我正在尝试运行a script from crontab that will check the connection但我还想检查btsync服务(sudo service btsync status)的状态。我如何将它放在一个将从Crontab运行的脚本中,查看输出,并启动重启除非"运行"?

2 个答案:

答案 0 :(得分:3)

您可以按照与checkwifi.sh相同的步骤操作,但请将其设为checkbtsync.sh

这些方面应该有效:

#!/bin/sh    
btsyncResult=$(sudo service btsync status)

if [[ $btsyncResult != *"is running"* ]]
then
    sudo /sbin/shutdown -r now
fi 

理论上,这将获取btsync status命令的结果并将其作为文本存储在变量中。如果文字中没有包含“' running'它关闭了。剩下的就像你提到的链接上的checkwifi步骤一样:

将其存储在/usr/local/bin/checkbtsync.sh

然后运行

sudo chmod 775 /usr/local/bin/checkbtsync.sh

然后crontab获得这个新行:

*/5 * * * * /usr/bin/sudo -H /usr/local/bin/checkbtsync.sh >> /dev/null 2>&1

答案 1 :(得分:1)

使用ps aux检查进程是否正在运行。将以下脚本命名为 btsync_reboot.sh ,将chown命名为运行cron的用户。

#!/bin/sh
echo "check service $(date)" >> /var/log/btsync-check.log
ps auxw | grep btsync | grep -v grep > /dev/null

if [ $? != 0 ]
then
        echo "rebooting at $(date)" >> /var/log/btsync-reboot.log
        reboot now >> /var/log/btsync-reboot.log
else 
        echo "btsync is running"  >> /var/log/btsync-check.log
fi

Cron表达:* * * * * sh /path/to/btsync-reboot.sh