Mac | プログラマティックに電源入り切り part.2

色々あって root の cron で pmset が上手くないので、違うことを考えてみた。
個人メモなので解説などないです。

visudo

ユーザー名は administrator。
pmset は root でないと変更不可。
最終行に入れないとダメという噂もある。

administrator   ALL=(ALL) NOPASSWD: /usr/bin/pmset

~/.sleep

root の cron を諦め sleepwatcher で。

#!/bin/bash

now=`/opt/homebrew/bin/gdate +%s`
task1=`/opt/homebrew/bin/gdate -d "03:00:00" +%s`
task2=`/opt/homebrew/bin/gdate -d "09:00:00" +%s`
task3=`/opt/homebrew/bin/gdate -d "19:00:00" +%s`

if [ $now -lt $task1 ]; then
    sudo pmset repeat wakeorpoweron MTWRFSU 03:00:00 sleep MTWRFSU 03:10:00
elif [ $now -lt $task2 ]; then
    sudo pmset repeat wakeorpoweron MTWRFSU 09:00:00 sleep MTWRFSU 09:10:00
elif [ $now -lt $task3 ]; then
    sudo pmset repeat wakeorpoweron MTWRFSU 19:00:00 sleep MTWRFSU 19:10:00
else
    sudo pmset repeat wakeorpoweron MTWRFSU 03:00:00 sleep MTWRFSU 03:10:00
fi

回したいタスクは ユーザーの cron に。

gdate

Mac の date はつかえん!

date: illegal option -- d
usage: date [-jnRu] [-r seconds|file] [-v[+|-]val[ymwdHMS]]
            [-I[date | hours | minutes | seconds]]
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

GUN coreutils 入れる。

brew install coreutils

~/.bash_profile に alias してもいいけど。まぁいいや。