继续前三篇的内容,可以控制主机的开启与休眠状态后,我们要让它在需要提供服务的时候开启,不需要的时候休眠。
我们可以在树莓派上编写一个服务器程序,程序提供两个接口,一个是进行网络唤醒,一个是发送休眠命令。
程序运行一个定时器,每隔几秒检测上次进行网络唤醒的时间和当前时间的差,比如大于5分钟,那就进行休眠。
前台程序在使用时,为了避免主机进入睡眠状态,则需要在5分钟内再次发送网络唤醒请求,改变上次记录的时间,以避免主机睡眠。
树莓派给主机发送休眠命令,可以使用ssh,不过因为要执行休眠命令,需要root用户。另外,为了避免输密码,我们需要使用密钥登录。
在树莓派上生成公钥和密钥,需要在用户的.ssh目录下运行,注意这里我们为了登录时不输密码,也不给密钥设置密码:
ssh-keygen -t rsa -b 4096
然后将公钥复制到主机上,这里用scp命令,如果root用户没有.ssh文件夹,还要自行建立:
scp id_rsa.pub root@hostname:/root/.ssh/pub
接下来,在主机上进行以下操作,将公钥内容添加到authorized_keys文件中:
cd /root/.ssh
touch authorized_keys
chmod 600 authorized_keys
cat pub >>authorized_keys
好了,这样就可以在树莓派上控制主机睡眠了:
$ ssh root@hostname pm-suspend