以前seleniumでchrome自動操作を定期的に行う処理をしたいたが、macのシステム環境設定からのスケジュール設定数には限界があることを知りこの機会にまとめておく。
問題点
見ればわかるが起床またはスリープ解除はそもそも1つしか設定できない。解決策
調べたらmacでは電源の操作をpmsetで行うらしい。
簡単な例文は下記になる
# 現在設定されているスケジュール確認
pmset -g sched
# 1回のみ実行.以下は起動させる場合
# ほかに sleep, wake, shutdown, wakeorpoweron がある.
sudo pmset schedule poweron "10/20/11 18:00|00"
# 繰り返し実行.曜日は MTWRFSU の部分集合で記述する
sudo pmset repeat shutdown RF 07:50:00
GUIじゃ最大2個のスケジュールしか登録できないが、pmsetとcronをうまく組み合わせれば実際何個でもスケジュールを登録できる!
注意する点
これでうまく行くかと思いきや、cronでpmsetが起動しなかった。
エラー文にはpmsetってそもそもroot権限でしか作動しないらしい。
なのでsudoのcrontabでスケジュールやらを設定する。
# rootにログイン
sudo su
# rootとしてcronを書く
crontab -e
実際に書いてみよう
例文は下記になる。
0 1 * * * /path/to/script1
1 1 * * * pmset repeat shutdown MTWRFSU 01:02:00 wakeorpoweron MTWRFSU 02:59:00
0 3 * * * /path/to/script2
1 3 * * * pmset repeat shutdown MTWRFSU 03:02:00 wakeorpoweron MTWRFSU 00:59:00
これを解釈すると
- 01:00にscript1を実行する
- 01:02にパソコンをシャットダウンさせることと、02:59にパソコンを起動させるスケジュールを01:01に登録する
- 02:59にパソコンが起動する
- 03:00にscript2を実行する
- 03:02にパソコンをシャットダウンさせることと、翌日00:59にパソコンを起動させるスケジュールを03:01に登録することで原点に戻る
上記の原理でいくらでも定期的な命令を実行できるわけだ!
素晴らしい!以上!
参考になったサイト
https://apple.stackexchange.com/questions/56635/schedule-multiple-wake-up-times-for-mac
http://kapibara3kapibara3.blogspot.com/2019/03/pmsetmac.html