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

推薦する

iviewは動的なフォームとカスタム検証期間の重複を実装します

フォーム項目を動的に追加するiview の動的なフォーム追加は非常に簡単です。フォーム項目を配列に設...

NODE.JS を使用して WEBSERVER を作成する手順

目次Node.jsとはNodeJSをインストールするNode を使用して Hello World を...

HTML の表のフレームとルール属性の詳細な説明

テーブル タグの frame 属性と rules 属性は境界線の表示を制御できます。フレーム プロパ...

ES6 Promiseの使い方の詳細な説明

目次約束とは何ですか?拒否の使用法キャッチの使い方すべての使用法レースの使用約束とは何ですか? Pr...

Linux ベースの MySQL マスター スレーブ構成の全プロセスを記録する

mysql マスタースレーブ構成1. 準備ホスト: 192.168.244.128スレーブ: 192...

CSSアニメーションによるテーブルスクロールカルーセル効果の実装

前回の CSS 回転灯と同じ内容の CSS アニメーションの応用です。これは単なる別のアプリケーショ...

Vue開発の一般的な手法の詳細な説明

目次$nextTick() $forceUpdate() $セット() .sync——2.3.0 以...

MySQL 5.7 でパスワードを変更するときに発生する ERROR 1054 (42S22) の解決方法

MySQL 5.7 を新しくインストールしました。ログインすると、パスワードが間違っているというメッ...

MySQL 分離列とプレフィックスインデックスの使用の概要

目次データ列を分離するプレフィックスインデックスとインデックスの選択性データ列を分離するMySQL ...

IE6/7 は混乱するだろう: 空のテキスト ノードの高さの問題

序文: ietester でドキュメント コードを表示するには、debugbar を使用します。すべ...

VUE uni-app でよく使用される API についての簡単な説明

目次1. ルーティングとページジャンプ2. インターフェース要約する1. ルーティングとページジャン...

ウェブページを作るときに知っておくべきいくつかのスキル

1. IE6 では z-index が無効です。 CSS では、階層を変更するために z-index...

HTMLページがincludeを使用してphpファイルをインポートした後に余分な空白行があります

インターネットで見つけた方法は効果的ですinclude によって導入されたフッター ファイルとヘッダ...

MySQL クラスター化インデックスのページ分割原理の分析例

この記事では、MySQL クラスター化インデックスのページ分割を例を使って説明します。ご参考までに、...

オンデマンドで Vue コンポーネントを自動的にインポートする方法

目次グローバル登録部分登録ローカル自動登録さまざまなソリューションの比較コンポーネント名について参照...