我有一個習慣,定鬧鐘每隔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