ホーム

Supervisor設定生成

Linux Supervisord (supervisord.conf) 設定ジェネレーター

ゾンビプロセス防止 POSIX

自動再起動、プロセス並行数、ログ出力リダイレクト、環境変数、非特権ユーザー設定を含むSupervisordプログラム設定ブロックをブラウザ上で即座に生成します。

プリセット:
実行コマンドと基本設定
プロセス並列・クラスタ構成
Instances: 4
ライフサイクルと自動再起動
シグナル制御とゾンビプロセス防止
ログ出力とストリーム設定
環境変数定義
KEY="value"

改行は Supervisord 標準のカンマ区切り構文へ自動変換されます。

; ==============================================================================
; Supervisord Program Configuration: laravel-worker
; Generated 100% Client-Side Private on ToolsAA
; Path: /etc/supervisor/conf.d/laravel-worker.conf (Ubuntu/Debian)
;   or: /etc/supervisord.d/laravel-worker.ini (CentOS/RHEL/Rocky)
; ==============================================================================

[program:laravel-worker]
command=php /var/www/laravel/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
process_name=%(program_name)s_%(process_num)02d
numprocs=4
directory=/var/www/laravel
user=www-data
umask=022
priority=999
autostart=true
autorestart=true
startsecs=1
startretries=3
stopsignal=QUIT
stopwaitsecs=3600
stopasgroup=true
killasgroup=true
redirect_stderr=true
stdout_logfile=/var/log/supervisor/laravel-worker.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=5
environment=APP_ENV="production",CACHE_DRIVER="redis"
クラスター並列度
4 Processes

Load-balanced parallel execution pool

ゾンビプロセス保護
100% Contained

stopasgroup & killasgroup both active

ログローテーション制限
50MB × 5

自動ローテーションによるディスク消費制限

100% ブラウザ内リアルタイムINI生成

サーバーへのデータ送信は一切不要。すべてのプロセス設定やシークレット環境変数はブラウザサンドボックス内で安全に処理されます。

子プロセス完全終了とゾンビ防止

stopasgroupおよびkillasgroupを標準サポートし、CeleryやGunicornなどの子プロセスツリーを確実に停止して孤立ゾンビ化を防ぎます。

主要Linuxディストリビューション・コンテナ対応

Ubuntu/Debian、RHEL/CentOS、Alpine Dockerコンテナ用マルチプロセス設定、およびsystemd連携ユニットファイルに完全準拠。

技術リファレンス&アーキテクチャガイド

Linux Supervisord (supervisord.conf) プログラム設定ジェネレーター — リファレンスガイド

自動再起動、プロセス並行数、ログ出力リダイレクト、環境変数、非特権ユーザー設定を含むSupervisordプログラム設定ブロックをブラウザ上で即座に生成します。

主要パラメータ&設定項目

commandディレクティブ

実行する完全なコマンドライン。デーモン化やバックグラウンド分岐を行わず、フォアグラウンドで常駐させる必要があります。

初期値: 必須
directoryディレクティブ

コマンドを実行する前に移動する作業ディレクトリ(ワーキングディレクトリ)の絶対パス。

初期値: /var/www/app
autostartディレクティブ

supervisordデーモンの起動時に、このプログラムを自動で開始するかどうかを指定します。

初期値: true
autorestartディレクティブ

プロセス停止時の自動再起動ポリシー('true'は常時、'false'は無効、'unexpected'は異常終了時のみ)。

初期値: true
userディレクティブ

root権限を破棄してプロセスを実行するための非特権UNIXユーザーアカウント名。

初期値: www-data
numprocsディレクティブ

同時起動する並行プロセス数。2以上の場合はprocess_nameに%(process_num)s書式が必要です。

初期値: 1
stopasgroupディレクティブ

停止シグナル(SIGTERM等)をプロセスグループ全体に送信し、子プロセスを確実に終了させます。

初期値: true
stdout_logfileディレクティブ

標準出力をリダイレクトするログファイルの絶対パス。自動ローテーション機能に対応しています。

初期値: /var/log/supervisor/%(program_name)s.out.log

プロの活用テクニック&推奨設定

バックグラウンドデーモン化を必ず無効化する

SupervisordはPIDを追跡して状態を監視します。Nginxの'daemon off;'設定やGunicornの--daemon無効化など、プロセスを必ずフォアグラウンドで動作させてください。

stopasgroupとkillasgroupをセットで設定する

Node.js、Celery、Gunicornなどの子プロセスをフォークするプログラムでは、'stopasgroup=true'と'killasgroup=true'を併用することでゾンビプロセスの残留を完全に防止できます。

supervisorctl rereadとupdateによる安全な反映

本番環境で'supervisorctl reload'を実行するとデーモン全体が再起動します。'supervisorctl reread'で差分を検知し、'supervisorctl update'で対象プログラムのみ安全にリロードしてください。

numprocsとprocess_nameによる並行スケール

ワーカーを複数起動する場合は'numprocs=4'と同時に'process_name=%(program_name)s_%(process_num)02d'を指定します。各プロセスに個別IDとログストリームが自動割り当てされます。

よくあるトラブルと解決策

プロセスがFATAL状態になり「Exited too quickly」と表示される

プロセスがバックグラウンドにフォークしているか、起動直後にクラッシュしています。フォアグラウンド実行になっているか確認し、stderrログを調査した上で、起動猶予時間として'startsecs=5'を設定してください。

SPAWNERR: 指定ユーザーへの権限降格に失敗する

'user='で指定したユーザーが/etc/passwdに実在することを確認してください。また、実行ファイルへの実行権限、および'directory'やログ出力先ディレクトリへの書き込み権限を付与してください。

プログラム停止後も子プロセスやワーカーが残り続ける

[program:name]セクションに'stopasgroup=true'および'killasgroup=true'を追加してください。設定しない場合、トップレベルの親ラッパープロセスにしか停止シグナルが送られません。

よくある質問 (FAQ)

Linux環境で個別のSupervisord設定ファイルはどこに配置すべきですか?▼

Debian/Ubuntu環境では'/etc/supervisor/conf.d/*.conf'、CentOS/RHEL/Rocky Linuxでは'/etc/supervisord.d/*.ini'または'*.conf'に配置し、メインのsupervisord.conf内の[include]ディレクティブから読み込ませるのが標準です。

既存の稼働中サービスを停止せずに設定変更を反映するにはどうすればよいですか?▼

'supervisorctl reread'を実行して変更・追加された設定ファイルを読み込ませ、続けて'supervisorctl update'を実行します。これにより、変更のあったプロセスのみが再起動または起動され、無関係なサービスは無停止で維持されます。

Pythonの仮想環境(venv)やNode.js(nvm)のコマンドをSupervisordで動かすには?▼

Supervisordはログインシェルの環境設定(.bashrcなど)を読み込みません。commandには'/home/user/venv/bin/python main.py'や'/home/user/.nvm/versions/node/v20.0.0/bin/node app.js'のように、仮想環境内の実行ファイル絶対パスを直接指定してください。

autorestart=trueとautorestart=unexpectedの違いは何ですか?▼

'autorestart=true'は正常終了(終了コード0)であっても終了するたびに無条件で再起動します。一方'autorestart=unexpected'は、exitcodesで指定された期待される終了コード(デフォルトは0と2)以外で終了した場合にのみ自動再起動します。

Supervisordで環境変数を設定するにはどう記述しますか?▼

設定ファイル内で'environment=KEY="value",PORT="8080",NODE_ENV="production"'のようにカンマ区切りで記述します。値にカンマやスペース、特殊文字が含まれる場合はダブルクォーテーションで囲みます。

関連するおすすめ開発ツール

すべてのツール →
HAProxy ロードバランサー設定ジェネレーター開発ツール

HAProxyロードバランサー向けの本番環境対応設定ファイル生成および構文バリデーションツール。

ツールを開く→
Kubernetes Helm Chart (Chart.yaml & values.yaml) 生成ツール開発ツール

標準的なKubernetes Helm v3のChart.yaml、values.yaml、およびService、Ingress、リソース制限を備えたデプロイメントテンプレートを生成します。

ツールを開く→
マルチステージ Dockerfile ジェネレーター (Node, Go, Python, Rust)開発ツール

Node.js、Golang、Python、Rust、Java向けの高セキュアで軽量なマルチステージ Dockerfile を生成。非rootユーザー設計とBuildKitキャッシュ最適化を完全網羅。

ツールを開く→
SQL DDL から Kysely TypeScript 型定義生成ツール開発ツール

PostgreSQL、MySQL、SQLiteのSQL DDLスキーマを解析し、完全な型安全性を備えたKysely向けTypeScript型定義とインターフェースを生成するための開発者向けリファレンス。

ツールを開く→
SQL DDL から MikroORM TypeScript エンティティ変換ジェネレーター開発ツール

SQL CREATE TABLE 定義を解析し、@Entity、@PrimaryKey、@Property、@Index、およびリレーション装飾子を備えた MikroORM エンティティクラスに変換します。

ツールを開く→
JSONからMongooseスキーマ&TypeScriptモデル生成ツール開発ツール

JSONペイロードからMongoDB Mongooseスキーマ、TypeScript型定義(Document・DTO)、ネストされたサブドキュメント、タイムスタンプを推論・自動生成します。

ツールを開く→