このページの目次
定期タスクと自動スケジューリング
すべてのカスタム定期タスクは systemd timer を統一して使用し、cron は使用しない。cron より優れている点:ログが journald に集約され一元検索可能、依存チェーン(After/Wants)、ランダム遅延によるスラーム効果、失敗時のリトライ機構、
systemctl list-timersで全体を一目で把握可能。本記事は頻度別にグループ化:高頻度(秒単位の収集と自己修復)→日次(同期と収集)→月次(証明書)→常駐型(長期のヘルスチェック)。
一、高頻度(≤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
→ 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
二、日次:同期と収集
深夜のオフピーク時間帯に実行し、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 profile に適用する。両端で検証 + バックアップ + 失敗時の自動ロールバックを行う。サブスクリプションとの書き込み競合を避けるため、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分)
国网(国家電網)の電気料金データを収集し、textfile collector → Prometheus に出力する。環境変数は /etc/default/sgcc-collector に設定。
llm-job@daily-harvest(23:50)
夜間に当日の Claude Code セッション + openclaw のメモリから、ローカルモデルを使用して map-reduce で「実際に完了した作業」を抽出し、当日の ~/doc/daily/ に冪等性を持って追加する。これは「完了した作業が doc-daily-log に記録されていない」という根本的な網羅性問題を解決する。llm-jobs 框架 に属する。
llm-job@daily-report(09:00)
毎日のサマリー(天気、作業ログの要約、都市)を WeChat にプッシュする。昨日の ~/doc/daily/(daily-harvest によって補完済み)を読み取り、ローカルモデルで重複排除して人間が理解しやすい文章にグループ化してから配信する。モデルが利用不可の場合は元のグループ化に戻す。都市情報は ~/.current-city(iOS ショートカット/openclaw によって管理)から取得する。llm-jobs 框架 に属し、テンプレートユニットは llm-job@.service。旧 daily-report-weixin.timer(無効化済み、スクリプトはリカバリ用に保持)を置換する。
三、月次
acme-renew(毎月20日 03:00)
acme.sh DNS-01(AliDNS)を使用して *.liz6.com のワイルドカード証明書を自動更新し、DERP サーバーにデプロイする。プロキシ 127.0.0.1:7890 を経由する(ACME リクエストは国外へのアクセスが必要)。
四、常駐型:長期のヘルスチェック
rathole-watchdog(5分ごと)
doc トンネルのヘルスエンドポイントをプローブし、連続3回失敗時に docker restart rathole-client を実行して、ジッターによる誤検知を防ぐ。詳細は rathole-tunnel.md を参照。
# ~/.config/systemd/user/rathole-watchdog.timer
[Timer]
OnBootSec=2min
OnUnitActiveSec=5min
五、標準システムタスク(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 — ソフトウェアスタック一覧