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 ステートメントの最新のレコードをクエリします (最適化)

推薦する

HTML で 2 列レイアウトを実装する方法の例 (左側は固定幅、右側は適応幅)

HTMLは2列レイアウトを実装し、左側は固定幅、右側は適応幅です。実装1: <スタイル>...

CSSポジションの5つの異なる値の使い方の詳細な説明

位置プロパティposition プロパティは、要素に使用する配置方法のタイプ (静的、相対的、固定、...

MySQLのスケジュールタスクが正常に実行できない原因の分析と解決

目次序文原因分析と解決策スケジュールされたタスクを迅速に実行する要約する序文データベースのスケジュー...

Vue は URL に基づいて非同一オリジンのファイルをどのようにダウンロードするのか

一般的に、URL に基づいてファイルをダウンロードする場合、次の 2 つの解決策があります。 1. ...

ウェブサイトデザインの経験 ウェブサイト構築におけるよくある間違いのまとめ

注意: 計画、設計、開発のいずれの場合でも、これらの間違いは避けなければなりません。 1. ナビゲー...

docker を使用して複数のネットワーク インターフェースを持つコンテナーを起動する方法の例

コンテナにネットワークインターフェースを追加する1 デフォルトのネットワークモードでコンテナを実行す...

ウェブページを開いて数秒後に他のページにリダイレクトする

これを実現するには、次のコードを追加するだけです。方法1: メタを使用する使用方法: <Met...

フロア効果を実現するためのJavaScript

この記事では、フロア効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...

MySQLカスタム関数の原理と使用法の分析

この記事では、例を使用して MySQL カスタム関数の原理と使用方法を説明します。ご参考までに、詳細...

uniapp プロジェクトの最適化方法と提案

目次1. 複雑なページデータ領域をコンポーネントにカプセル化する2. 大きな画像の使用を避ける3. ...

Vue.jsはシンプルな折りたたみパネルを実装します

この記事では、Vue.jsの具体的なコードを共有して、シンプルな折りたたみパネルを実装する例を紹介し...

Linux システムの .bash_profile ファイルの詳細な説明

目次1. 環境変数$PATH: 2. 環境変数を変更します。 3. bash_profileの目的要...

タイムライン効果を実現するCSS3

最近、コンピューターの電源を入れたところ、Geek Academy が新規ユーザーに 1 か月の無料...

Nexus サーバーを設定するための詳細な手順

1. ネクサスサービス構築の意義イントラネットの統合プロキシとして、チームで共同開発する場合、全員が...

Linux ファイアウォールを設定してポート 80 と 3306 を開く方法

ポート80も設定されています。まずファイアウォール設定ファイルを入力しますシェル># vim ...