2015年12月5日 星期六

Raspberry Pi: 校時, 開機自動執行, 特定重開機, 排程

since: 2015/12/05
update: 2015/12/05

A. 手動校時:
     $ date
     $ date --help | more
        // date MMDDhhmm
     $ sudo date 11201458


-----------------------------------------------------------------------------------------------

B. 開機後自動執行 python 程式:

     1. 撰寫執行 python 的 shell script:
        
/home/pi/project/run_my_job.sh
#!/bin/sh
cd /home/pi/project
python main_script.py

     2. 開機後自動登入 pi 帳號:
         $ sudo nano /etc/inittab
         ....
         #1:2345:respawn:/sbin/getty --noclear 38400 tty1
         1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1

     3. 設定排程:(關機與啟動程式)
         $ sudo crontab -e
        ....
        # m h  dom mon dow   command

        00 17 * * * /sbin/shutdown -h now
       @reboot /home/pi/project/
run_my_job.sh

-----------------------------------------------------------------------------------------------

C.
這次開機, 距離上次開機時間超過 60 秒, 會再重新開機一次        
     1. 記錄時間的檔案:

         /home/pi/project/check_time.txt
         檔案內容:(格式: YYYYMMDDhhmmss 每次開機後會被覆寫以更新時間)
         20151120115130

     2. 檢查的程式:
         /home/pi/project/check_reboot.sh      

         程式內容:

#!/bin/bash

nowtime=`date +%Y%m%d%H%M%S`
lasttime=$(</home/pi/project/check_time.txt)

echo "lasttime: $lasttime"
echo "nowtime: $nowtime"

echo $nowtime > /home/pi/project/check_time.txt

difftime=$(echo $(( nowtime - lasttime )))

echo "difftime: $difftime"


if [ $difftime -gt 60 ]; then
   echo "reboot"
   sudo reboot   
fi


說明: -gt: greater then ; -st: smaller then 


     3.
加入排程:
        $ sudo crontab -e
        ....
        # m h  dom mon dow   command
        00 17 * * * /sbin/shutdown -h now
        @reboot /home/pi/project/
run_my_job.sh
        @reboot /home/pi/project/check_reboot.sh

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。