Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用

Linux でのプロセスデーモン スーパーバイザーのインストール、構成、および使用

Supervisor は非常に優れたデーモン管理ツールです。自動起動、ログ出力、自動ログカットなど、一連の強力な機能を備えています。以下は CentOS に Supervisor をインストールして使用した記録です。

インストール

# epel ソース yum インストール epel-release
# スーパーバイザーをインストールする
yum インストール -y スーパーバイザー
# 起動時に自動的に起動する systemctl enable supervisord
# supervisordサービスを起動する systemctl start supervisord 
バッシュ

構成パス

# メイン設定ファイル /etc/supervisord.conf
# プログラム構成フォルダ /etc/supervisord.d/ を実行します
バッシュ

作戦司令部

systemctl 停止 supervisord
systemctl 起動 supervisord
systemctl ステータス supervisord
# 実行中のプログラムに影響を与えずに設定ファイルを再読み込みする systemctl reload supervisord
systemctl 再起動 supervisord
バッシュ

使用テスト

起動と実行の回数を記録するテスト スクリプト test.php を作成します。

<?php
試す {
  ファイルの内容を取得します。
} キャッチ (例外 $e) {
  0 を返します。
}
$a++;
file_put_contents('./times.json', $a);
echo date('Ymd H:i:s') . " これは {$a} 回目のスタートです!!!!" . PHP_EOL;

$i = 1;
一方(1){
  echo date('Ymd H:i:s') . "{$i} 番目の出力" . PHP_EOL;
  $i++;
  睡眠(5);
}

PHP の

プログラム構成フォルダ/etc/supervisord.dに test.ini を追加します。

[プログラム:テスト]
ディレクトリ=/home/wwwroot/test.cc
コマンド=php test.php
自動起動=true
自動再起動=true
stderr_logfile=/home/wwwroot/test.cc/log/error.log
stdout_logfile=/home/wwwroot/test.cc/log/out.log
イニ

上記は必要な基本設定の一部です。より詳細な設定については、以下を参照してください。

;[プログラム:プログラム名]
;command=/bin/cat ; プログラム (相対パスは PATH を使用し、引数を取ることができます)
;process_name=%(program_name)s ; process_name expr (デフォルト %(program_name)s)
;numprocs=1 ; 開始するプロセスコピーの数 (定義 1)
;directory=/tmp ; 実行前に cwd するディレクトリ (def no cwd)
;umask=022 ; プロセスのumask(デフォルトなし)
;priority=999 ; 相対的な開始優先度(デフォルト 999)
;autostart=true ; supervisord の起動時に開始します (デフォルト: true)
;autorestart=true ; 予期しない終了時に再起動する (デフォルト: true)
;startsecs=10 ; プログラムが実行し続ける必要がある秒数 (定義: 1)
;startretries=3 ; シリアル起動失敗の最大回数 (デフォルト 3)
;exitcodes=0,2 ; プロセスの「期待される」終了コード (デフォルト 0,2)
;stopsignal=QUIT ; プロセスを強制終了するために使用されるシグナル (デフォルトは TERM)
;stopwaitsecs=10 ; b4 SIGKILL を待つ最大秒数 (デフォルト 10)
;user=chrism ; プログラムを実行するにはこの UNIX アカウントに setuid します
;redirect_stderr=true ; proc stderr を stdout にリダイレクトします (デフォルトは false)
;stdout_logfile=/a/path ; stdout ログ パス、なしの場合は NONE、デフォルトは AUTO
;stdout_logfile_maxbytes=1MB ; ローテーション前のログファイルの最大バイト数 (デフォルト 50MB)
;stdout_logfile_backups=10 ; stdout ログファイルのバックアップ数 (デフォルト 10)
;stdout_capture_maxbytes=1MB ; 'capturemode' のバイト数 (デフォルト 0)
;stdout_events_enabled=false ; stdout 書き込み時にイベントを発行します (デフォルトは false)
;stderr_logfile=/a/path ; stderr ログ パス、なしの場合は NONE、デフォルトは AUTO
;stderr_logfile_maxbytes=1MB ; ローテーション前のログファイルの最大バイト数 (デフォルト 50MB)
;stderr_logfile_backups=10 ; stderr ログファイルのバックアップ数 (デフォルト 10)
;stderr_capture_maxbytes=1MB ; 'capturemode' のバイト数 (デフォルト 0)
;stderr_events_enabled=false ; stderr 書き込み時にイベントを発行します (デフォルトは false)
;environment=A=1,B=2 ; プロセス環境の追加 (def no adds)
;serverurl=AUTO ; serverurl の計算を上書きする (childutils)
イニ

新しい構成をロードするには、restart または reload configuration コマンドを実行します。

systemctl 再起動 supervisord
systemctl をリロードします supervisord
バッシュ

プロセスを表示:

[root@localhost test.cc]# ps -aux | grep test.php
ルート 22277 0.0 0.6 269732 12124 ? S 17:38 0:00 php test.php
ルート 22335 0.0 0.0 112712 996 ポイント/0 S+ 17:41 0:00 grep --color=auto test.php
バッシュ

サーバーを再起動するか、 kill -9 PID実行してプロセスを強制終了することができます。 supervisorプログラムをできるだけ早く再起動し、プロセスをデーモン化する目的が達成されることがわかります。

構成に関しては、基本的に必要な機能、マルチプロセス操作、丸太切断サイズ、保持量などをカバーしている上記のリファレンスを詳しく見てください。強力で使いやすいです。

より高度な機能については、 supervisor公式ウェブサイトのマニュアルを参照してください: ポータル

要約する

以上が、編集者が紹介した Linux のプロセスデーモン スーパーバイザーのインストール、構成、使用方法です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。
この記事が役に立ったと思われた方は、ぜひ転載していただき、出典を明記してください。ありがとうございます!

以下もご興味があるかもしれません:
  • Linux プロセス管理ツール スーパーバイザーのインストールと設定のチュートリアル
  • Linux運用保守ツールSupervisor(プロセス管理ツール)のインストールと使用
  • Supervisor のインストールと構成の詳細な説明 (Linux/Unix プロセス管理ツール)
  • PHPプログラマーはスーパーバイザーを使用してデーモンプロセスを実装するLinuxシリーズをプレイします
  • スーパーバイザーウォッチドッグの使い方を3分で学ぶ

<<:  Angular のパフォーマンス最適化: サードパーティ コンポーネントと遅延読み込みテクノロジー

>>:  MySQL は SQL ステートメントの最新のレコードをクエリします (最適化)

推薦する

MySQLでバッチを更新するいくつかの方法

通常、フィールド値を更新するには次の SQL ステートメントを使用します。 mytable を更新し...

MySQLとOracleの誤解の詳細な説明

目次本質的な違いデータベースセキュリティ権限スキーマの移行パターンオブジェクトの類似性スキーマオブジ...

HTML a タグの href 属性を使用して相対パスと絶対パスを指定する方法

実際のWeb開発では、画像の挿入やCSSファイルなどすべてパスが必要となります。ファイルパスを誤って...

CSS のグリッドプロパティの使用に関する詳細な説明

グリッドレイアウト親要素に追加された属性グリッドテンプレートの列/グリッドテンプレートの行要素の行ま...

js キャンバスで円形の水のアニメーションを実現

この記事の例では、円形の水のアニメーションを実現するためのキャンバスの具体的なコードを参考までに共有...

CSSスプライト技術は複数の背景を1つのPNG画像に統合しますCSSポジショニング

アメリカのYAHOOがページ制作で使用している画像統合技術。これらのアイコン、列背景、画像ボタンを定...

マージンの重複問題を解決する方法

1. まず、2つ以上の隣接する通常フローブロック要素の垂直マージンの崩壊を引き起こす原因を知る必要が...

MySql バージョンの問題に対する完璧なソリューション sql_mode=only_full_group_by

1. sql_modeを確認する @@sql_mode を選択照会された値は次のとおりです。 ON...

Angularプロジェクトにおける共有モジュールの実装の詳細な説明

目次1. 共有共通モジュール2. 共有マテリアルモジュール3. 共有確認ダイアログ1. 共有共通モジ...

JavaScriptはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機能を実装するためのJavaScriptの具体的なコードを紹介し...

CentOS7 での PostgreSQL 11 の詳細なインストールと設定のチュートリアル

1. 公式ウェブサイトアドレス公式サイトではインストールの参考手順が紹介されています。公式サイトを見...

Linux FTP匿名アップロードとダウンロードが自動的に開始される問題を解決する

勉強や仕事で FTP サーバーを頻繁に使用する場合は、起動時に自動的に起動するように設定できます。設...

DockerでKafkaをデプロイする方法

目次1. Dockerをビルドする2. コンテナに入る3. 設定ファイルを変更する4. Kafkaを...

25 div+css プログラミングのヒントとコツ

1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...

ウェブページ HTML 特殊記号 HTML 特殊文字比較表

特殊記号名前付きエンティティ10進数エンコード特殊記号名前付きエンティティ10進数エンコードアルファ...