description: "auto-sync launchd管理。dotfiles自動同期の状態確認・起動・停止・ログ確認。トリガー: launchd, auto-sync, 自動同期, 同期, sync agent" allowed-tools:
- Bash
- Read
- Grep
launchd-manage スキル
dotfiles自動同期のlaunchdエージェント管理を行う。
概要
auto-syncは毎時dotfilesの変更をGitHubに自動同期するlaunchdエージェント。
- plistファイル:
~/Library/LaunchAgents/com.user.dotfiles-sync.plist - 実行スクリプト:
/Users/snkrheadz/ghq/github.com/snkrheadz/laptop/scripts/auto-sync.sh - ログファイル:
~/Library/Logs/dotfiles-sync.log - 実行間隔: 3600秒(1時間)
コマンド
エージェント状態確認
launchctl list | grep dotfiles
plistファイル確認
cat ~/Library/LaunchAgents/com.user.dotfiles-sync.plist
自動同期スクリプト確認
cat /Users/snkrheadz/ghq/github.com/snkrheadz/laptop/scripts/auto-sync.sh
ログ確認
cat ~/Library/Logs/dotfiles-sync.log | tail -50
最新のログエントリ
tail -20 ~/Library/Logs/dotfiles-sync.log
エージェント停止
launchctl unload ~/Library/LaunchAgents/com.user.dotfiles-sync.plist
エージェント起動
launchctl load ~/Library/LaunchAgents/com.user.dotfiles-sync.plist
エージェント再起動
launchctl unload ~/Library/LaunchAgents/com.user.dotfiles-sync.plist && \
launchctl load ~/Library/LaunchAgents/com.user.dotfiles-sync.plist
手動で同期実行
/Users/snkrheadz/ghq/github.com/snkrheadz/laptop/scripts/auto-sync.sh
plistのシンタックスチェック
plutil -lint ~/Library/LaunchAgents/com.user.dotfiles-sync.plist
plistファイル構造
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "...">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.dotfiles-sync</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/auto-sync.sh</string>
</array>
<key>StartInterval</key>
<integer>3600</integer>
<key>StandardOutPath</key>
<string>~/Library/Logs/dotfiles-sync.log</string>
<key>StandardErrorPath</key>
<string>~/Library/Logs/dotfiles-sync.log</string>
</dict>
</plist>
実行フロー
状態確認
- launchdエージェントの稼働状態確認
- plistファイルの存在確認
- 最新のログエントリを表示
トラブルシューティング
- エージェント状態確認
- ログを確認して最後の実行結果を調査
- 手動実行でスクリプトの動作確認
- 必要に応じてエージェント再起動
使用例
- "auto-syncの状態を確認"
- "自動同期のログを見せて"
- "auto-syncを再起動"
- "自動同期を一時停止"
- "手動で同期を実行"
auto-sync.shの動作
- dotfilesディレクトリに移動
brew bundle dump --forceでBrewfile更新git add -Aで変更をステージ- 変更がある場合のみコミット
- リモートにプッシュ
注意事項
- エージェント停止中は自動同期されない
- 手動同期は
scripts/auto-sync.shで実行可能 - ログが肥大化したら手動で削除可能
- ネットワーク接続がない場合、プッシュは失敗する(次回実行時に再試行)