概要
直接 plist を見るしかないのでシェルスクリプトを使いましょう
環境
- macOS 15.7
シェルスクリプト
#!/bin/bash
# launchctl list で "local.mac" を含むタスクのラベルを取得
labels=$(launchctl list | grep local.mac | awk '{print $3}')
echo "Label -> Schedule"
for label in $labels; do
# plist の候補パス
plist_path=""
for dir in ~/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons /System/Library/LaunchDaemons; do
if [ -f "$dir/$label.plist" ]; then
plist_path="$dir/$label.plist"
break
fi
done
if [ -z "$plist_path" ]; then
echo "$label -> plist not found"
continue
fi
# plist を JSON に変換して jq でパース
json=$(plutil -convert json -o - "$plist_path" 2>/dev/null)
if [ -z "$json" ]; then
echo "$label -> failed to parse plist"
continue
fi
echo "$label ->"
# RunAtLoad
run_at_load=$(echo "$json" | jq -r '.RunAtLoad // empty')
if [ "$run_at_load" == "true" ]; then
echo " RunAtLoad: true"
fi
# StartInterval
start_interval=$(echo "$json" | jq -r '.StartInterval // empty')
if [ -n "$start_interval" ]; then
echo " StartInterval: every $start_interval seconds"
fi
# StartCalendarInterval (複数対応)
intervals=$(echo "$json" | jq -c '.StartCalendarInterval // empty')
if [ -n "$intervals" ]; then
echo " StartCalendarInterval:"
echo "$intervals" | jq -r 'if type=="array" then .[] else . end | " Hour: \(.Hour // "-"), Minute: \(.Minute // "0")"'
fi
echo "-------------------------"
done
出力結果
Label -> Schedule
local.mac.1 ->
StartCalendarInterval:
Hour: 1, Minute: 0
Hour: 4, Minute: 0
Hour: 7, Minute: 0
Hour: 10, Minute: 0
Hour: 13, Minute: 0
Hour: 16, Minute: 0
Hour: 19, Minute: 0
Hour: 22, Minute: 0
-------------------------
local.mac.2 ->
StartCalendarInterval:
Hour: 8, Minute: 0
-------------------------
local.mac.3 ->
StartCalendarInterval:
Hour: 8, Minute: 5
-------------------------
local.mac.4 ->
StartCalendarInterval:
Hour: 5, Minute: 30
Hour: 11, Minute: 30
Hour: 17, Minute: 30
Hour: 23, Minute: 30
-------------------------
local.mac.5 ->
StartCalendarInterval:
Hour: 9, Minute: 0
Hour: 12, Minute: 0
Hour: 18, Minute: 0
Hour: 21, Minute: 0
-------------------------
local.mac.6 ->
StartCalendarInterval:
Hour: 8, Minute: 5
-------------------------
最後に
もっと簡単に確認できる方法はないだろうか
0 件のコメント:
コメントを投稿