失礼します。
launchctlデーモンから shutdown コマンドを実行する方法を試してみたのですが、これもうまくいかず。
ログイン状態ではきちんとシャットダウンしてくれるのですが、ログインしていない状態ではシャットダウンされませんでした。
「launchctlデーモンから〜」というのは「launchctl」コマンドを使用し、スーパーユーザ(root)のデーモンとして登録したということでしょうか。単に、launchctlを使っただけではユーザ権限のエージェントになってしまっている可能性もありそうです。(行った作業の詳細が不明なので断言できませんが)
私なら、以下のようなplistファイル( owner:root、mode:644 )を/Library/LaunchDaemons/内に作成して再起動、でしょうか。(未検証)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.my.shutdown-midnight</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/shutdown</string>
<string>-h</string>
<string>now</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>0</integer>
<key>Hour</key>
<integer>0</integer>
</dict>
</dict>
</plist>
ただ、このままだと0:00にスリープ状態だった場合、翌朝スリープから解除された途端にシャットダウンする事に成りかねないので、shutdownの直接起動ではなく、スクリプト内から条件をチェックした上で実行するようにした方がよいかもしれませんね。
追記:
はに による書き込み:
あるいは、システム環境設定>省エネルギーのスケジュールで決まった時間に自動シャットダウンにしておくとか。
このスケジュール機能には制限があり、ヘルプでは以下のようになっています。
「お使いの Mac が指定した時刻にシステム終了するためには、コンピュータがスリープ状態ではなく、ユーザがログインしている必要があります。ユーザが Mac にログインしていないか、または Mac がスリープ状態の場合、お使いのコンピュータはシステム終了しません。」
質問者の方も書かれてますが、今回の問題(自動・ログインユーザ無)では使えないようです。