定期タスクと自動スケジューリング
このページの目次
すべてのカスタム定期タスクは systemd timer を統一して使用し、cron は使用しません。cron より優れている点:ログは journald に一元化され検索可能、依存チェーン(After/Wants)、ランダム遅延によるスラーム効果、失敗時のリトライ機能、
systemctl list-timersで全体を一目で把握可能。本記事は頻度別にグループ化:高頻度(秒単位の収集と自己修復)→日次(同期と収集)→月次(証明書)→デーモン型(長周期のヘルスチェック)。
1. 高頻度(≤5 分):秒単位の収集と自己修復
これらの timer はリアルタイムメトリクス収集と障害時の自動復旧を担当し、node_exporter textfile collector → Prometheus に出力します。停止すると監視データが欠落したり、ネットワークが切断されたりする可能性があります。
amdgpu-metrics(10 秒ごと)
GPU の温度/消費電力/周波数を収集します。
[Timer]
OnBootSec=15s
OnUnitActiveSec=10s
net-metrics(15 秒ごと)
WiFi 信号強度/リンク品質 + プロキシ遅延プローブを収集します。
rathole-probe(30 秒ごと)
公開されているすべての rathole サービスに対して TCP/TLS/HTTP のヘルスチェックを実行し、rathole_service_up gauge を出力します。このメトリクスは Grafana の rathole アラートルールを駆動します(monitoring.md 参照)。
プローブ対象:
TCP: 中継 VPS :2333(rathole 制御チャネル)
HTTPS: derp / grafana / chat / doc / paste / caldav / owntracks
HTTPS 200: mail.liz6.com/healthz/live
→ rathole_service_up{service="doc"} 1/0
owntracks-collector(30 秒ごと)
ローカルの OwnTracks Recorder API から家族の GPS 位置、バッテリー残量、精度を取得し → textfile collector に出力します。
wifi-watchdog(30 秒ごと)
ゲートウェイ .1 に対して ping を実行し、連続失敗時に段階的な自己修復を行います:再接続→RF 初期化→ドライバー再読み込み。詳細は network-recovery.md を参照してください。
[Timer]
OnBootSec=60s
OnUnitActiveSec=30s
llama-gpu-sync(15 秒ごと)
GPU の実際の負荷に応じて消費電力モードを切り替えます:busy≥50%→COMPUTE(モード5)、アイドル>90s→BOOTUP_DEFAULT(モード0)。ユーザーレベルの timer です。詳細は local-llm.md を参照してください。
# ~/.config/systemd/user/llama-gpu-sync.timer
[Timer]
OnBootSec=15s
OnUnitActiveSec=15s
2. 日次:同期と収集
深夜のオフピーク時間帯に実行し、CPU/ネットワーク/N100 の書き込み競合を避けます。
sync-subscribe(03:30)
真のソース mihomo config を取得し、ローカル環境からの脱却とサニタイズを行った後、rsync で中継 VPS に同期します。clash.yaml + sub.txt(v2rayN base64) を出力し、モバイル端末のローミングインポートに使用します。
sync-mihomo-to-router(03:45)
真のソースから proxies/groups/rules の3セクションを抽出し → N100 Nikki プロファイルに適用します。双方向検証 + バックアップ + 失敗時の自動ロールバックを行います。N100 への同時書き込みを避けるため、サブスクリプションとは15分ずらして実行します。
これら2つのタスクの詳細は network-architecture.md の設定派生パイプラインを参照してください。
backup-system(04:00、ランダム遅延 10分)
システムディスクの rsync インクリメンタルバックアップを tank/backup/system + ZFS スナップショットに実行し、30世代保持します。アイドル IO プライオリティ、Persistent=true により見逃し分は後で補完実行されます。詳細は system-backup.md を参照してください。
eix-sync(06:31)
Gentoo eix データベースの同期。標準的なシステム timer で、Portage インストール時に付属します。
sgcc-collector(08:00、ランダム遅延 10分)
国家電網(State Grid)の電気料金データを収集し → textfile collector → Prometheus に出力します。環境変数は /etc/default/sgcc-collector に設定します。
llm-job@daily-harvest(23:50)
夜間に、当日の Claude Code / Codex / Grok のセッションおよび openclaw のメモリから、ローカルモデルを使用して map-reduce で「実際に完了した作業」を抽出し、日次の ~/doc/daily/ に冪等性を持って追加します。これは「完了した作業が doc-daily-log に記録されていない」という根本的な網羅性問題を解決します。ソースはスクリプトで登録されるため、未知のツールを魔法のように発見することはありません。llm-jobs 框架 に属します。
llm-job@daily-report(09:00)
日次サマリー(天気、作業ログの要約、都市情報)をローカルメール liz@liz6.com に書き込みます。昨日の ~/doc/daily/(daily-harvest によって補完済み)を読み取り、ローカルモデルで重複排除し人間が理解しやすい文章にグループ化してから配信します。モデルが利用不可の場合は元のグループ化に戻ります。都市情報は ~/.current-city(iOS ショートカット/openclaw によって管理)から読み取ります。llm-jobs 框架 に属し、テンプレートユニットは llm-job@.service です。配信の失敗は Grafana Bark アラート(旧 WeChat ボット / notify-flush は停止済み)によって通知されます。
3. 月次
acme-renew(毎月20日 03:00)
acme.sh DNS-01(AliDNS)を使用して *.liz6.com のワイルドカード証明書を自動更新し、DERP サーバーにデプロイします。プロキシ 127.0.0.1:7890 を経由します(ACME リクエストは国外通信が必要)。
4. デーモン型:長周期のヘルスチェック
rathole-watchdog(5 分ごと)
doc トンネルのヘルスエンドポイントをプローブし、連続3回失敗時に docker restart rathole-client を実行し、デバウンスによる誤殺を防ぎます。詳細は rathole-tunnel.md を参照してください。
# ~/.config/systemd/user/rathole-watchdog.timer
[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
5. 標準システムタスク(cron)
システム付属のもののみで、カスタム cron タスクはありません:
| タスク | パス | 頻度 |
|---|---|---|
| man-db | /etc/cron.daily/ | 毎日 |
| smartmontools-update-drivedb | /etc/cron.monthly/ | 毎月 |
関連ドキュメント
- network-architecture.md — 設定派生パイプライン + デーモン
- rathole-tunnel.md — トンネルデーモン
- local-llm.md — GPU 消費電力スケジューリング
- network-recovery.md — WiFi 自己修復ポリシー
- system-backup.md — システムディスクのバックアップと復元
- monitoring.md — 監視アーキテクチャ(rathole-probe メトリクスが Grafana アラートを駆動)
- software.md — ソフトウェアスタック一覧