#Raspberry Pi 3b+でプログラムを決まった時間に実行したい
##はじめに
前回の記事( #2_Raspberry Pi 3B+からLINEに天気予報を通知 )でラズベリーパイからLINEに天気予報を通知するプログラムを作ってみました。
ターミナルからプログラムを叩いてLINEに通知が送られるところまで実行して「やったー!」と思っていたんですが...。
そもそも天気予報を受け取るのにいちいちターミナルを開いてプログラムを叩くの?
毎朝天気予報を受け取る機能は『自動化』したい。
『自動化』っていうとなんかかっこいいですよね。
ということで今回はラズベリーパイ(Linux)の『cron』を使って毎日決まった時間にプログラムを実行してみます。
前回の記事で作成したプログラム以外のpython,shellscriptなどでも使えちゃうので、
『このプログラムを決まった時間に動かしたい!』という希望があればご覧ください。
####1.ターミナルを開いて「crontab -e」と入力し実行
実行したい時間、プログラムを以下のように記述します。
分~曜日という並び順になっているのに違和感を覚えるかもしれませんがこういうものと思ってください。
分 時 日 月 曜日 実行したいプログラム
* * * * * program
もし毎日7:30にプログラムを
実行したいという場合は以下のように記述します。
「ж」を実行したい時間に書き換えてください。月、日、曜日を「ж」にして時分だけ指定することで毎日実行することができます。
30 7 * * * program
今回は、毎朝6時に天気予報を取得するプログラムを実行したいので以下のように記述しました。
実行するweather.pyは/home/pi/projectというディレクトリに配置されているのでパスをしていします。
###3.アクセス権限(パーミッション)の確認
せっかくcronに登録してもプログラム自体に実行権限がついていなければ意味がありません。
現在のユーザにプログラムの実行権限が付いているかどうか確認しましょう。
ターミナルで以下のコマンドを実行します。
ls -l [プログラムのパス]
『-rw-r--r--』というのが頭についているのがわかります。
2~4文字目の『rw-』に注目してください。
記号(r w x -) | 権限 |
---|---|
r | 読み込み可能 |
w | 書き込み可能 |
x | 実行可能 |
- | 権限なし |
『rw』がついているので読み書きはできますが『x』がないためプログラムを実行することができません |
####4.実行権限の付与
以下のコマンドを実行しパーミッションを変更します。
chmod 755 [プログラムのパス]
以下のコマンドを実行して再度パーミッションを確認しましょう。
ls -l [プログラムのパス]
『rw-』→『rwx』に変更されたのがわかりますね。
これでcronから実行されるはずです。