システムが決まった日時に自動で実行されるための土台環境を構築
Macbookが毎日決まった時間に、指定したファイルを実行する環境を構築する。まずは、MacBookが毎日決まった時間に起動するための環境を構築する。
MacBookを毎日決まった時間に起動させるためのpmset
Macにはデフォルトで、毎日決まった時間に起動あるいはスリープを解除させる「pmset」というシステムコマンドが備わっている。pmsetはターミナルから実行する。
sudo pmset repeat wakeorpoweron MTWRFSU 07:00:00
MTWRFSUは、各曜日の英語のイニシャルである。MはMonday、TはTuesdayの略。上記は1週間の全ての曜日のイニシャルを指定しているため、イコール全ての曜日に起動させるという意味合いとなる。
07:00:00は、起動させる時間を指定している。この部分は24時間指定で記述する。午後3時を指定する場合は、15:00:00と記述することになる。
指定した時間にPythonスクリプトを自動実行させるためのlaunchd
Macにはデフォルトで、指定した時間に指定したファイルを実行させる「launchd」というシステムコマンドが備わっている。launchdはターミナルから実行する。
launchdを実行する前に、事前準備として、実行するためのファイルを作成する。今回作成し実行するファイルは「Python」ファイルとなる。
自動実行されることになるPythonファイル
自動実行されることになるPythonファイルを作成する。
が、その前に、このPythonファイルを保存するためのフォルダを作成する。今回は下記階層に「localai」というフォルダを作成。
/Users/takenorinakamoto/localai/
余談となるが、最初、デスクトップ直下に「localai」フォルダを作成しテストしていたが、MacBookのmacOSセキュリティーが強固すぎて、デスクトップが強力に保護されている関係により、バックグランドで動かそうとするプログラムが弾かれてしまう(のであろう)ことが発覚。
よって、macOSセキュリティーの影響を受けない=バックグラウンドでも動かせる階層、にフォルダを作成することとした。
改めて、今回作成したファイルは「localai_test.py」で、パスは下記のとおり。このパスであれば、無事に稼働することを確認した。
/Users/takenorinakamoto/localai/localai_test.py
ファイルの中身は割愛する。
どのファイルを実行するかを指定するXMLファイル
続いて、いつ、どのファイルを実行するか、を指定するための「XML」ファイルを作成する。XMLファイルという名称ではあるが、このファイルの拡張子は「.plist」となる。
今回作成したファイルは「com.user.localai_poster.plist」
このファイルを、MacBookが自動起動時に読み込むこととなるフォルダに移動させる。移動させるためのコマンドは下記、ターミナルで実行する。
cp /Users/takenorinakamoto/localai/com.user.localai_poster.plist ~/Library/LaunchAgents/com.user.localai_poster.plist
Macに登録してから実行する
作成したXMLファイル(com.user.localai_poster.plist)をMacに登録する必要がある。登録するためのコマンドは下記、ターミナルで実行する。
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.user.localai_poster.plist
続いて、上記で登録したファイルを実行する。実行するためのコマンドは下記、ターミナルで実行する。
launchctl kickstart -k gui/$(id -u)/com.user.localai_poster
実行されれば無事終了、指定したファイルを指定した日時に、自動的に実行される土台の環境構築が完了したことになる。
今回の復習と確認
これまでに記載した内容をまとめると下記の通り。
- 「com.user.localai_poster.plist」に記述した時間に、Pythonファイルが自動で実行される
- 自動で実行されるPythonファイルは「localai_test.py」
実行する曜日や時間を変更する場合
前提として、冒頭に触れた「pmset」で設定した曜日と時間を変更する。
続いて、「com.user.localai_poster.plist」の中身、時間を指定している箇所を書き換える。
実行する内容を変更する場合
「localai_test.py」の該当箇所を書き換える。
変更した内容をMacに反映させる
すでに実装させているシステムを解除させる。
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.user.localai_poster.plist
書き換えたXMLファイルをMaxのシステムフォルダにコピーする。
cp /Users/takenorinakamoto/localai/com.user.localai_poster.plist ~/Library/LaunchAgents/com.user.localai_poster.plist
書き換えたXMLファイルをMacに登録する。
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.user.localai_poster.plist

コメント