用树莓派做下载机
由于树莓派3B对USB3.0兼容性不好,容易出现掉盘,博主暂时没找到解决方法,不推荐用树莓派挂USB3.0接口的硬盘。用USB2.0接口硬盘的可以试一试。
一、硬件配置
树莓派3,3.5寸硬盘+硬盘盒,路由器
博主将树莓派连到路由器上,再将移动硬盘接到树莓派上。由于树莓派上的sd卡空间较小,下载产生的临时文件也存在移动硬盘中。
二、自启动配置
学校宿舍每天都会断电,而博主买的硬盘盒断电后还要按一下按钮才会启动硬盘,而下载软件amule启动后若检测不到下载目录就会更改下载目录,所以用先启动硬盘再启动amuled的方案。
不需要手动按开关的童鞋,可以使用自启动服务或自启动脚本。
1.使用udev在插入硬盘时运行脚本
在/etc/udev/rules.d目录下编写规则,可以启动脚本
ACTION=="add",ENV{ID_MODEL}=="HE-G3000", RUN+="/home/pi/mysh/mydisk.sh"
2.shell脚本创建后台
由于udev运行该sh脚本时,硬盘还未挂载(连sda都看不到),这时不方便运行amule,用sleep等待会导致硬盘挂载失败。
可行的方法是用这个脚本创建一个后台脚本,后台脚本检测到下载目录后启动amuled
mydisk.sh脚本如下:
#!/bin/sh nohup sh /home/pi/mysh/startamule.sh >/home/pi/mysh/shlog.log 2>&1 &
创建后台脚本的命令nohup格式为
nohup command &
使用该格式时还需将标准输出设置到其他位置,比如>nohup.out,博主设置的位置是>/home/pi/mysh/shlog.log
还需要将标准错误输出设置到其他位置,2>&1就是将标准错误输出到与标准输出相同的位置上。
3.后台脚本启动amule和transmission
startamule.sh脚本:
#!/bin/sh myPath="/media/pi/share/amule" while [ ! -d "$myPath" ]; do echo "waiting" sleep 1 done ps aux | grep transmission-daemon | grep -v grep if [ $? -eq 0 ];then echo "transmission already start" else echo "start transmission" su pi -c transmission-daemon fi ps aux | grep amuled | grep -v grep if [ $? -eq 0 ];then echo "amuled already start" else echo "start amuled" su pi -c "amuled -f" fi
启动脚本后,每秒检查一次硬盘是否挂载上。检测到硬盘后,判断amule和transmission的进程是否存在,若不存在则启动下载程序。
不过上述代码并不可靠,建议改为以启动服务的方式运行程序。
4.自动关机
sudo crontab -e
添加如下规则
50 22 * * * /sbin/shutdown -h now
参考资料
树莓派VNC分辨率设置 http://shumeipai.nxez.com/2013/08/31/custom-display-resolution-raspberry-pie.html
定时运行任务 http://ju.outofmemory.cn/entry/68682
amule启动方案 http://xdavidx.blog.163.com/blog/static/19966109520091861025599/
插入U盘时运行脚本的方法 http://bbs.chinaunix.net/thread-1920594-1-1.html
udev介绍 http://www.cnitblog.com/luofuchong/archive/2007/12/18/37831.html
nohup命令后台运行脚本 http://blog.csdn.net/chs_jdmdr/article/details/7553074