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 シリーズ 6 のユーザーと認証

目次チュートリアルシリーズ1. ユーザー管理1. ユーザーアカウント2. アカウントの追加と削除3....

MySQL 8.0.15 インストール グラフィック チュートリアルとデータベースの基礎

MySQLソフトウェアのインストールとデータベースの基礎は参考用です。具体的な内容は次のとおりです。...

Linux ディスクとディスク パーティションを理解するための記事

序文Linux システムのすべてのハードウェア デバイスは、ファイルの形式で表現され、使用されます。...

SQL実行ステップの詳細な分析

SQL実行ステップの詳細な分析まず、ステートメントが実行される順序を見てみましょう。 (8)選択する...

MySQL データベースのマスター スレーブ分離のサンプル コード

導入MySQL データベースの読み取りと書き込みの分離を設定すると、データベースに対する書き込み操作...

JavaScriptプロトタイプとプロトタイプチェーンを徹底的に理解する

目次序文基礎を築くプロトタイプコンストラクタのプロパティ__プロト__プロトタイプチェーン改善する要...

10秒以内にMySQLデータベースに数百万件のレコードを挿入する実装

まず、次の質問について考えてみましょう。このような膨大な量のデータをデータベースに挿入するには、通常...

バックエンドデータを取得するためのVue Elementフロントエンドアプリケーション開発

目次概要1. バックエンドデータの取得と処理2. インターフェース表示処理概要前回のエッセイ「ステッ...

Tomcat 7.0 で仮想ディレクトリを設定し、仮想パスを構成する方法

Tomcat7.0は仮想ディレクトリを設定します(1)現在、当社のウェブサイトはデフォルトのディレク...

Reactにおけるコンテキスト適用シナリオの分析

コンテキストの定義と目的コンテキストは、コンポーネント ツリーにプロパティを明示的に渡すことなく、コ...

MySQLテーブル構造を変更するコマンドを表示する

簡単な説明エディターはデータベースのエンコードが間違っているために問題に遭遇することが多く、これは頭...

HTML テーブルタグチュートリアル (32): セルの水平方向の配置属性 ALIGN

水平方向では、セルの配置を左、中央、右に設定できます。基本的な構文<TD ALIGN=&quo...

MySQLデータベースイベントスケジュール実行タスクの詳細な説明

1. 背景プロジェクトの業務が進むにつれて、データベース テーブルの数がどんどん大きくなり、ハードデ...

vue3でDOMをマウントするためのプラグインを書く際の問題について

vue2と比較して、vue3にはアプリの概念が追加され、vue3プロジェクトの作成も // メイン....

MySQL 5.7.19 winx64 無料インストールバージョン設定チュートリアル

mysql-5.7.19-winx64インストールフリー版の設定方法、参考までに具体的な内容は以下の...