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

推薦する

Linux サービス管理の 2 つの方法、service と systemctl の詳細な説明

1.サービスコマンドサービスコマンドは実際には/etc/init.dディレクトリに移動し、関連プログ...

Vue の双方向イベントバインディング v-model の原理についての簡単な説明

目次説明する:要約する補充するDOM を直接変更して操作する js や jQuery とは異なり、V...

MySQLデータベースとテーブルシャーディングの概要

プロジェクトの開発中に、データベースのデータがどんどん大きくなり、その結果、1 つのテーブルにデータ...

Bツリーの削除プロセスの紹介

前回の記事 https://www.jb51.net/article/154157.htm では、B...

Vue3 の組み合わせ API における setup、ref、reactive の完全な使用方法

1. セットアップを始める次のコード関数を簡単に紹介します。 ref 関数を使用して変数の変更を監視...

nginxのリソースキャッシュ設定の詳細な説明

私はずっとキャッシュについて学びたいと思っていました。結局のところ、キャッシュはフロントエンドのパフ...

Dockerイメージの作成、保存、読み込み方法

イメージを作成する方法は 3 つあります。既存のイメージに基づいてコンテナを作成する、ローカル テン...

Nginx は動的と静的の分離を実装します 例の説明

ウェブサイトの解析を高速化するために、動的ページと静的ページを異なるサーバーで解析して、解析速度を向...

Windows Server 2008 64ビット MySQL5.6 インストール不要版 設定方法図

1 公式ウェブサイトから MySQL 5.6 バージョンの圧縮パッケージmysql-5.6.36-w...

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...

MySQLのネクストキーロックのロック範囲についての簡単な説明

序文ある日、突然 MySQL の次のキー ロックについて尋ねられ、私の即座の反応は次のようなものでし...

Docker で MySQL をインストールし、リモート接続を実装するチュートリアル

画像をプルする docker プル mysql完成した画像を見る Docker イメージイメージを介...

Typescript での infer キーワードの使用に関する詳細な理解

目次推測する事例:理解を深める参照する後で忘れないように、キーワード infer をメモしておきます...

クロスドメイン js フロントエンドの 8 つの実装ソリューション

目次1. jsonp クロスドメイン2. document.domain + iframe クロスド...

webpackコード断片化の実装

目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...