最近Raspbmc好像自动升级了,导致部署的Transmission PT下载时不时的终止,为了解决这个问题,我们想到的是通过计划任务定时检查服务,如果服务不存在自动启动服务。
默认情况下Raspbmc是没有开启cron的,这里找到开通方法:
1. 修改~/.xbmc/userdata/addon_data/script.raspbmc.settings/settings.xml文件把sys.service.cron改成true,下次重启系统时自动开启cron服务。
2. 用“crontab -e”命令行添加新的计划任务,格式:几分 几时 几日 几月 星期几 命令行,用*号代替任意值。
3. 用“sudo /etc/init.d/cron start”启动计划任务服务。
自动判断Transmission服务是否启动并自动启动的脚本如下,比如文件名check-transmission.sh:
[bash]
#!/bin/bash
running=$(sudo ps -ef | grep “transmission-daemon” | grep -v “grep”)
if [ “$running” ]; then
echo “Transmission server is running.”
else
echo “Transmission srever is not running, run it…”
sudo /etc/init.d/transmission-daemon start
fi
[/bash]
Transmission的安装参见这里,脚本里需要注意的一点是用grep查看进程时一定要用进程的全名,而且保存成的.sh文件名不能跟进程名一样,比如我开始用grep “transmission”,然后用check-transmission.sh作文件名,结果总是不能自动启动服务,测试下来发现running参数总能查到当前check-transmission.sh这个进程了,所以不会启动服务。
把check-transmission.sh添加进cron服务:
* * * * * sh /home/pi/check-transmission.sh >> /dev/null 2>&1