CentOS7 systemdにカスタムシステムサービスを追加する方法

CentOS7 systemdにカスタムシステムサービスを追加する方法

システムド:

CentOS 7のサービスsystemctlスクリプトは、/usr/lib/systemd/に保存されます。これは、システム(system)とユーザー(user)に分かれており、/usr/lib/systemd/system、/usr/lib/systemd/userです。

各サービスは .service で終わり、一般的に [Unit]、[Service]、[Install] の 3 つの部分に分かれています。nginx を例にとると、具体的な内容は以下のようになります。

サービスを作成します。

次の内容で /usr/lib/systemd/system の下に nginx.service ファイルを作成します (アプリケーションの要件に応じて、/usr/lib/systemd/usr の下に作成することもできます)。

[ユニット]
説明=nginx - 高性能ウェブサーバー
ドキュメント=http://nginx.org/en/docs/
後=network.target remote-fs.target nss-lookup.target
 
[サービス]
タイプ=フォーク
PIDファイル=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
実行開始=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
プライベートTmp=true
 
[インストール]
WantedBy=マルチユーザー.ターゲット

[ユニット]
説明: サービスの簡単な説明
ドキュメント: サービスドキュメント

After= : 依存関係。依存サービスが開始された後にのみカスタム サービス ユニットを開始します。

[サービス]
タイプ: スタートアップ タイプ シンプル、フォーク、ワンショット、通知、dbus

Type=simple (デフォルト): systemd はサービスが直ちに開始されると想定します。サービスプロセスはフォークしません。サービスが他のサービスを開始する場合、サービスがソケットでアクティブ化されていない限り、このタイプの起動を使用しないでください。 Type=forking: systemd は、サービス プロセスがフォークし、親プロセスが終了すると、サービスが正常に開始されたと見なします。通常のデーモンの場合、この起動方法がニーズを満たせないことが確実でない限り、このタイプの起動を使用します。この起動タイプを使用する場合は、systemd がサービスのメインプロセスを追跡できるように、PIDFile= も指定する必要があります。 Type=oneshot: このオプションは、1 つのタスクのみを実行してすぐに終了するサービスに適しています。また、サービス プロセスが終了した後も systemd がサービスをアクティブであると見なすように、RemainAfterExit=yes を設定する必要がある場合もあります。 Type=notify: Type=simple と同じですが、サービスが準備完了時に systemd に信号を送信することを指定します。この通知の実装は、libsystemd-daemon.so によって提供されます。 Type=dbus: この方法で起動すると、systemd は指定された BusName が DBus システム バスに表示されたときにサービスが準備完了であると見なします。

PIDFile: pidファイルパス
ExecStartPre: 開始前に行うべきこと。上記の例では、設定ファイルをテストすることです -t
ExecStart: 開始
ExecReload: リロード
ExecStop: 停止
PrivateTmp: Trueはサービスに独立した一時領域を割り当てることを意味します

[インストール]

WantedBy: サービスのインストール用のユーザー モード。文字通り、誰がこのサービスを使用したいのかを意味します。上記のテキストで使用されているターゲットは multi-user.target です。これは、このサービスを使用するディレクトリがマルチユーザーであることを意味します。 「上記はすべて私の個人的な理解と推測です。何か間違っている点があれば、アドバイスをください。」各 .target は、実際にはユニット ファイルへのリンクのコレクションです。以下を実行すると、

$ sudo systemctl nginx.service を有効にする

/usr/lib/systemd/system/nginx.service ファイルへの新しいリンクが /etc/systemd/system/multi-user.target.wants/ ディレクトリに作成されます。

運営サービス:

#サービスを開始します$ sudo systemctl start nginx.service

#ログを表示する $ sudo journalctl -f -u nginx.service
-- ログは 2015-06-25 木曜日 17:32:20 CST から始まります。 --
6月25日 10:28:24 Leco.lan systemd[1]: nginxを起動しています - 高性能ウェブサーバー...
6月25日 10:28:24 Leco.lan nginx[7976]: nginx: 設定ファイル /etc/nginx/nginx.conf の構文は正常です
6月25日 10:28:24 Leco.lan nginx[7976]: nginx: 設定ファイル /etc/nginx/nginx.conf のテストが成功しました
6月25日 10:28:24 Leco.lan systemd[1]: nginx(高性能ウェブサーバー)を起動しました。

#再起動$ sudo systemctl restart nginx.service

#リロード $ sudo systemctl reload nginx.service

#停止$ sudo systemctl stop nginx.service

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • systemdにカスタムシステムサービスを追加し、カスタムスタートアップを設定する方法
  • Docker で HTTP/HTTPS プロキシを設定する方法
  • Dockerのプロキシ設定の詳細な説明
  • Dockerネットワークプロキシ設定の詳細な説明
  • CentOS 7 での Docker プロキシの設定 (Linux での Systemd サービスの環境変数設定)

<<:  Centos6.5 の rpm パッケージから mysql5.7 をインストールするときに発生する初期化エラーの解決策

>>:  VUEはFlappy Birdゲームのサンプルコードを実装します

推薦する

MySQL GTID マスターとスレーブの不一致を修復するソリューション

目次解決策1: レプリカを再構築する前提条件アドバンテージ欠点手順マスター奴隷解決策2: データ修復...

Windows 10 での MySQL 5.7.19 インストール チュートリアル MySQL のルート パスワードを忘れた場合の変更方法

MySQL 5.7.19のインストールを例に挙げると、まずダウンロードしますもちろん、最初に行うこと...

最も単純な ErrorBoundary コンポーネントをカプセル化して、React 例外を処理する

序文React 16から、子コンポーネントで発生したエラーを捕捉し、エラーログを記録し、ダウングレー...

シンプルなカルーセル チャートを実装するための JavaScript の最も完全なコード分析 (ES5)

この記事では、シンプルなカルーセル効果を実現するためのJavaScriptの具体的なコードを参考まで...

MySQLの通常インデックスとユニークインデックスの違いの詳しい説明

目次1 概念上の区別2 事例紹介3 クエリパフォーマンス4 アップデートのパフォーマンス4.1 記憶...

Tencent Cloud Server での Jenkins の設定方法の詳細

目次1. Tencent Cloud Serverに接続する2. 環境整備Jenkinsのデプロイメ...

親コンテナの CSS 均等分割 (完全三分の一) の実装

親コンテナの幅は固定されています。子要素が親の幅を均等に分割するには、どのような方法がありますか?コ...

MySQL の一時テーブルと派生テーブルについての簡単な説明

派生テーブルについてメイン クエリに派生テーブルが含まれている場合、または SELECT ステートメ...

MySql 学習 3 日目: データ テーブル間の接続とクエリの詳細

主キー:キーワード: 主キー機能: null にすることはできず、一意である必要があります。主キーの...

CSS 位置プロパティが絶対の場合のパーセンテージ値の計算

位置が絶対の場合、関連する属性のパーセンテージは、参照先の要素 (包含ブロック) を基準として計算さ...

テーブルの動的な色の変更を実現するJavaScript

この記事では、テーブルの動的な色の変更を実現するためのJavaScriptの具体的なコードを参考まで...

CSS の div の下の同じ行にある複数の要素を右揃えにする

方法1:フロート:右さらに、フローティングにするとレイアウトがよりコンパクトになります(隙間がなくな...

WindowsシステムでMySQLデータベースを完全にアンインストールして、MySQLを再インストールします

1. コントロールパネルで、MySQLのすべてのコンポーネントをアンインストールします。コントロール...

MySQL 8.0.22 zip圧縮パッケージ版(無料インストール)のダウンロード、インストール、および構成手順の詳細

目次最初のステップはMySQLをダウンロードすることですステップ2: ダウンロードした圧縮パッケージ...