毎日のバックアップ、ログ集計、ヘルスチェックのような運用タスクは、手作業のままだと実行漏れや設定ブレが起きやすくなります。OpenClaw の Cron ジョブを使うと、まず小さく自動化し、安定を確認しながら段階的に広げられます。
結論: OpenClaw でシェルスクリプトを定期実行する方法は、最小構成で始めてログを見ながら段階的に広げるのが最短です。
Background
定期実行で重要なのは、最初から大きなジョブを作らないことです。まず 1 つの処理だけを自動化し、想定どおりに動くことを確認してから対象を増やすほうが安全です。
特にシェルスクリプトは、実行ディレクトリ、環境変数、認証状態の違いで手動実行と結果が変わりやすくなります。成功条件を先に決めておくと、運用開始後の切り分けがかなり楽になります。
Step-by-step
- 目的と対象範囲を決める
最初は 1 本のスクリプトだけを対象にします。たとえば「毎日 9:00 に実行し、成功なら完了時刻を残す」のように、時刻と成功条件を明文化します。
- 最小構成のシェルスクリプトを用意する
まずは外部依存の少ないサンプルで動作確認します。定期実行ではカレントディレクトリに依存しないよう、パスを明示するのが基本です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
mkdir -p scripts
cat > scripts/daily-sample.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
# 実行ログを保存するディレクトリ
LOG_DIR="${HOME}/openclaw-logs"
mkdir -p "${LOG_DIR}"
# カレントディレクトリ依存を避ける
cd "$(dirname "$0")/.."
echo "[$(date '+%F %T %Z')] daily job started" | tee -a "${LOG_DIR}/daily-sample.log"
# ここに定期実行したい処理を書く
# 例: バックアップ、集計、ヘルスチェックなど
echo "workspace: $(pwd)" | tee -a "${LOG_DIR}/daily-sample.log"
echo "[$(date '+%F %T %Z')] daily job finished" | tee -a "${LOG_DIR}/daily-sample.log"
EOF
chmod +x scripts/daily-sample.sh
- OpenClaw に Cron ジョブを登録する
最初の登録では、実行時刻、タイムゾーン、セッション分離を明示します。--message には、何を実行し、何を返してほしいかを短く書きます。
1
2
3
4
5
6
7
# 毎日 09:00 JST に scripts/daily-sample.sh を実行する
openclaw cron add \
--name "daily-shell-sample" \
--cron "0 9 * * *" \
--tz "Asia/Tokyo" \
--session isolated \
--message "リポジトリ直下の scripts/daily-sample.sh を bash で実行し、標準出力と終了コードを3行で要約。失敗時は原因も1行で添える。"
登録後は、設定値が意図どおりかを確認します。時刻ずれの事故は、初回確認でほぼ防げます。
1
2
# 名前、Cron式、タイムゾーンを確認する
openclaw cron list
- 実行結果を検証する
最初の数回は、成功可否だけでなく開始時刻、終了時刻、ログ内容を見ます。失敗した場合にどこを確認するかも、この段階で決めておきます。
再実行の手順は、ジョブ登録とは別に 1 回手動で試しておくと安心です。通知文や要約文は短く保ち、原因がすぐ分かる形にそろえてください。
Common pitfalls
-
タイムゾーンを指定せず、想定と違う時刻に動く
--tz "Asia/Tokyo"を必ず付けて登録し、openclaw cron listで反映値を確認します。JST 前提の運用なら、UTC のままにしないことが重要です。 -
手動では動くのに、定期実行だと失敗する
定期実行ではカレントディレクトリや環境変数が手元のシェルと一致しないことがあります。スクリプト内でcdを明示し、必要なパスは絶対パスか計算可能な相対パスで書いてください。 -
認証切れでジョブが落ちる
API トークンやクラウド認証は、手動確認時は有効でも定期実行時に期限切れになりがちです。失敗通知に認証エラーを含め、再認証手順を事前に決めておくと復旧が速くなります。 -
依存サービス停止でジョブだけ起動し、結果が空になる
ローカル LLM、外部 API、通知先が止まっていると、Cron 自体は動いても実処理は失敗します。スクリプトの先頭で依存先のヘルスチェックを行い、異常時は早めに終了させる構成にします。 -
1 つのジョブに処理を詰め込みすぎる
障害時の切り分けが難しくなり、再実行の影響範囲も広がります。最初は 1 ジョブ 1 責務に寄せ、安定後に段階的に分割や追加を進めるほうが運用しやすくなります。
Summary
OpenClaw でシェルスクリプトを定期実行するなら、最初は小さなスクリプトを 1 本だけ登録し、ログを見ながら安定性を確認する進め方が実践的です。特に、タイムゾーン、実行パス、認証、依存サービスの 4 点を先に固めておくと、定期運用の失敗をかなり減らせます。
流れとしては、最小構成で開始し、ログを検証し、問題を直してから対象を広げるのが基本です。この順番を守るだけで、OpenClaw の定期実行はかなり扱いやすくなります。