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