文章程式碼顯示

2018年7月7日 星期六

一起學 Python 108 : Raspberry pi 每天固定時間執行任務 ( 如重開機、執行 Python 文件)

前面我們提到了如何開機就執行 Python 程式碼,在本文中要講述如何在固定的時間(如每天的幾點幾分) 來執行對應的指令


偵測網路斷線時重開機

一開始我是從這裡看到的 樹莓派自動偵測網路斷線時重開機的方法

實作使用 dos2unix 將 checkwifi.sh 改成 Unix 格式 (程式碼如下,我加入個 echo 以方便知道這個腳本有被成功運行)

ping -c4 192.168.0.1 > /dev/null
if [ $? != 0 ]
then
  sudo reboot
else
  echo "Ping OK !"
fi

並且直接執行後得到



表示我們是可以直接執行這個腳本的

接著使用

crontab -e

進入 Cron ,並且在最後一行中輸入

0 * * * * sudo /usr/local/bin/checkwifi.sh

然後保存退出

(我調整了時間以方面我進行測試)

最後輸入  sudo service cron restart

補充 ( 20181001) : 

此處進入 crontab -e 的地方有兩個必須要注意的點

1. 目錄

你需要在剛登陸 Rpi 進去時的那個目錄底下,如果你依照上面的做法一路做下來,此時你的路徑應該是在 usr/local/bin/ ... 裡面的。若在這邊使用 crontab -e 是不會成功的

所以最簡便的方式就是重新登陸一次 Rpi 再執行 crontab -e


可參考上圖 File : 後面的路徑

2. 你不能在 sudo su 的模式下去執行 crontab -e

你的確會進入 crontab 文件沒錯,但 ! 他並不會執行

所以最好的方式仍然是你"重新" 連接一次 Rpi (關掉 putty 重開)

接著 執行 crontab -e


固定時間讓 Raspberry pi重啟

直接在 crontab 新增指令

新增的指令如下

5 22 * * * sudo -u root reroot

(在每天晚上 10:05 分時自動重啟 Raspberry pi)

0 21 * * 5 sudo -u root reroot
(每週五晚上 9 : 00 分 重啟)

同樣的最後輸入  sudo service cron restart

就完成定時重啟的功能

定時執行 Python 程式碼也是可以的

只要在 croncab 裡面加入

14 22 * * * python /home/pi/python_program/PiTurnON.py

就可以在每天晚上十點四十四分的時候執行指定的 py 文件



 :

若想要的是 " WIFI 有問題則重新啟動 WIFI 功能 " 而不是重新開機,可參考此連結

補充參考連結
第十二章、學習 Shell Scripts
树莓派如何定时关机或定时执行任务-Cron
【樹莓派】crontab設置Linux設備定時重啟



↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引