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ゲームのサンプルコードを実装します

推薦する

ドラッグフォトウォールを実現するネイティブJS

この記事では、ネイティブ JS で実装されたドラッグ可能な写真ウォールを紹介します。効果は次のとおり...

Vue.js でフォントを読み込む正しい方法

目次font-faceでフォントを正しく宣言するフォントをプリロードするフォントをホストするにはli...

MySQL での SQL モードの表示と設定の詳細な説明

MySQL での SQL モードの表示と設定MySQL はさまざまなモードで実行でき、さまざまなシナ...

js の一般的でない演算子と演算子の概要

一般的な演算子と JavaScript の演算子の概要カテゴリオペレーター算術演算子+、–、*、/、...

mysqlはタイムゾーン関連の問題を解決します

序文: MySQL を使用すると、時間の表示が正しくない、タイムゾーンが GMT+8 ゾーンにない、...

MySQL 8.0 再帰クエリの簡単な使用例

序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...

モバイル アプリのユーザー インターフェース設計に関する 10 のヒント

ヒント1: 集中力を保つ最高のモバイル アプリは、1 つのことを非常にうまく行うことに重点を置いてい...

JS 関数のアンチシェイクと関数スロットリングを理解する方法

目次概要1. 関数デバウンス2. 機能スロットリング(スロットル)概要関数アンチシェイクと関数スロッ...

CSS の画像パスの問題に関する議論 (同じパッケージ/異なるパッケージ)

CSS ファイルでは、背景を使用する、つまり背景画像を追加する必要がある場合があります。これは通常、...

Bootstrap 3.0 学習ノートのボタンとドロップダウン メニュー

前回の記事はBootstrap CSS部分の簡単なレビューであり、多くの詳細が見落とされていました。...

HTMLデザインパターンの日々の勉強ノート

HTML デザインパターン学習ノート今週は主にHTMLデザインパターンを学びました。学習内容をまとめ...

表の最初の行と最初の列を固定し、適応型ウィンドウを実現するための CSS の例コード

今日のキャンパス採用筆記試験では、固定された最初の行と最初の列を実装し、幅をウィンドウの変更に適応さ...

Vue における $router と $route の違いの詳細な説明

通常、vue プロジェクトではルーティングを使用します。vue-router は vue.js の公...

Vue の状態管理: Vuex の代わりに Pinia を使用する

目次1. ピニアとは何ですか? 2. Piniaは使いやすい3. ユーザーエクスペリエンス1. ピニ...