コンテンツにスキップ

OpenClawでバックグラウンド実行を管理する:execとprocessツールの使い方

コマンドラインで重い処理を実行しているとき、その完了をじっと待つのは時間がもったいないと感じることはありませんか?かといって、バックグラウンドに送ったプロセスの出力を後から確認したり、途中で入力を送ったりするのは意外と手間がかかるものです。

OpenClawでは、こうした長時間実行されるタスクをスマートに扱うための仕組みが用意されています。シェルコマンドを実行する exec ツールと、そのセッションを管理する process ツールを組み合わせることで、作業を止めることなく効率的にプロセスをコントロールできます。

  • exec ツールが利用可能な OpenClaw 環境
  • process ツール(バックグラウンドセッションの管理に必要)
  • ホスト実行用の elevated モード(必要な場合)
  • child-process bridge helper(外部の子プロセスを生成する場合)

5分でバックグラウンド実行の基本をマスターしましょう。

exec ツールでコマンドを実行します。yieldMs を設定すると、指定した時間を経過した後に自動でバックグラウンドへ移行します。

{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }

2. 状態を確認して出力を取得する

Section titled “2. 状態を確認して出力を取得する”

バックグラウンドに移行すると sessionId が発行されます。これを使って process ツールの poll アクションで最新の出力を確認できます。

{ "tool": "process", "action": "poll", "sessionId": "\<id\>" }

3. 最初からバックグラウンドで動かす

Section titled “3. 最初からバックグラウンドで動かす”

最初からバックグラウンドで実行したい場合は、background: true を指定するのがベストな方法です。

{ "tool": "exec", "command": "npm run build", "background": true }

4. 実行中のプロセスに入力を送る

Section titled “4. 実行中のプロセスに入力を送る”

対話的なコマンドなどで入力を送る必要がある場合は、write アクションを使用します。

{ "tool": "process", "action": "write", "sessionId": "\<id\>", "data": "y\n" }

exec がすぐに終了せず、バックグラウンドにも移行しない

Section titled “exec がすぐに終了せず、バックグラウンドにも移行しない”

process ツールが許可されていない設定になっている可能性があります。この場合、exec は同期的に実行され、yieldMs や background の設定は無視されます。ツールの権限設定を確認してください。

プロセスを再起動したらセッションが消えてしまった

Section titled “プロセスを再起動したらセッションが消えてしまった”

セッション情報はメモリ内に保持されており、ディスクには保存されません。OpenClaw のプロセスを再起動すると、実行中および終了済みのセッション情報はすべて失われる点に注意してください。

終了したはずのプロセスが残り続けている

Section titled “終了したはずのプロセスが残り続けている”

CLIの再起動や Gateway ヘルパーなどで、ツールの外で子プロセスを生成している場合に発生しがちです。child-process bridge helper をアタッチすることで、終了シグナルが正しく転送され、孤立したプロセスが残るのを防げます。


さらに詳しい設定や、特定のユースケースに合わせた構成については AI Setup Assistant で質問してみてください。

  • exec ツールの詳細なパラメータ(pty, workdir, env)を確認する
  • process log を使った過去のログ取得方法を学ぶ
  • 環境変数(PI_BASH_YIELD_MS など)によるデフォルト動作のカスタマイズ
OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。