我有一个习惯,定闹钟每隔60分钟左右,提醒本身休息一次。我发现本身有时候长时间思考,很容易拘泥于细节之中。适当的简单休息事后,每每会对正在解决和处理的问题有新的认识和发现,有事半功倍的奇效。html
不过大部分手机闹钟都不支持这种以小时为单位的周期闹铃。因此,我之前每次都是都手动调整闹钟时间。总感受有点 Low!因而,我就写了个简单的发邮件的 Lua 脚本,放到树莓派上做为一个shell命令使用;而后在每周一到周五的9点至23点整点各执行一次发邮件的操做。邮件是发到了个人 QQ 邮箱。收到QQ邮件后,左上角会有一个通知悬浮窗,体验比手机的震动声好了不少。linux
另外,之因此会选择使用 Lua 语言,只是最近本身恰好在看 Lua 而已,用其余语言也是能够的。ios
树莓派的 debian 官方推荐定制系统,内置有 Lua 5.1.5.可是 LuaJIT 使用了 JIT 技术,执行效率更高,因此更推荐安装和使用。LuaJIT 对应的也是 Lua 5.1 的语法。git
你能够在 LuaJIT 下载页 右键查看最新的 LuaJIT 稳定版本,而后参照执行:github
wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz tar xzf LuaJIT-2.0.5.tar.gz cd LuaJIT-2.0.5 make && sudo make install
验证是否安装成功,请执行:shell
luajit -v
安装成功,会输出:segmentfault
LuaJIT 2.0.5 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/
luarocks 是 Lua 的包管理工具。在树莓派上须要从源码安装 luarocks 。这须要一些技巧。服务器
你能够到 luarocks下载页 查看最新的luarocks版本,而后参考执行如下命令:socket
wget http://luarocks.github.io/luarocks/releases/luarocks-2.4.3.tar.gz tar xzf luarocks-2.4.3.tar.gz cd luarocks-2.4.3
luarocks 在编译前,须要先进行配置。完整的配置内容,参见:Customizing your settings。基于 LuaJIT 的配置命令以下:工具
./configure --lua-suffix="jit"
而后编译安装:
make build sudo make install
验证是否安装成功:
luarocks
luasocket 这个库,下面的代码会用到,须要提早安装下。 若是 luarocks 安装成功,那其余的 lua 库安装就很是简单了:
sudo luarocks install luasocket
新建一个 rest_reminder.lua 文件
vi rest_reminder.lua
而后输入如下 Lua 代码:
#!/usr/bin/env luajit local smtp = require("socket.smtp") from = "username@exapmle.com" --发件人 --收件人列表 rcpt = { "your_qq_number@qq.com" } mesgt = { headers = { -- 只是文字显示内容. to = "your_qq_number@qq.com", --收件人 subject = "请休息五分钟!" --主题 }, body = "您已连续思考一小时,请先休息五分钟吧!" } r, e = smtp.send{ from = from, rcpt = rcpt, source = smtp.message(mesgt), server = "smtp.example.com", user = "username@exapmle.com", password = "username_pwd" } if not r then print(e) else print("发送成功!") end
若是你想实现一些更复杂的操做,最好在经常使用电脑上配置一个 Lua 完整的开发环境。
想要文件能执行当作命令执行,还须要给文件添加可执行权限:
chmod +x ./rest_reminder.lua
测试代码是否有效:
./rest_reminder.lua
正常执行的话,你的收件人邮箱(或邮件垃圾箱),应该会收到一封邮箱。
注意:
headers 中的收件人会显示在邮件头,可是真正决定发送给谁的是 rcpt
smtp.example.com 要改成发信邮箱的 smtp 服务器。
username@exapmle.com 和 username_pwd 要改成真实的邮件用户名和密码
部分邮箱的 smtp 功能,可能须要单独开通。
crontab 简单实用,若是不是很熟悉,能够把它简单当作一个高度自定义的定时器。
假设脚本的完整路径是 /home/pi/task/rest_reminder.lua 。
执行:
crontab -e
在打开的内容区末尾新增:
00 9-23 * * * /home/pi/task/rest_reminder.lua
保存退出,正常应该会看到提示:
crontab: installing new crontab
此时,咱们的定时脚本已经生效了。即便重启电脑,这个脚本依然能够正常定时执行。
crontab 借助于 cron 服务。在必要时,你可使用 sytemed 的命令来操做 cron 服务:
# 查看状态 sudo systemctl status cron # 激活服务 sudo systemctl enable cron