Linux でサービス ファイルを作成する方法

Linux Desabisu Fairuwo Zuo Chengsuru Fang Fa



systemd init システムは現在、ほぼすべての Linux ディストリビューションの一部になっています。管理者または開発者は、systemd が管理できるサービスを作成します。たとえば、起動時にサービスを起動したり、サービスを手動で制御したりする場合は、カスタム サービス ファイルを使用して実行できます。

このチュートリアルでは、Linux 上で systemd サービス ファイルを作成する方法を説明します。







サービスファイルとは

先に進む前に、systemd サービス ファイルとは何か、また Linux 上でそれがどのように作成されるかを理解しましょう。



systemd サービス ファイルには、systemd がサービスを管理するための命令セットが含まれています。通常、次の 3 つのセクションが含まれます。



  • ユニット
  • サービス
  • インストール

ユニット このセクションには、簡単な説明、ドキュメント ページ、依存関係へのパスなど、サービスに関する基本情報が含まれています。の インストール このセクションはオプションですが、通常はサービスを有効にする必要があるシステム状態を管理します。





サービス セクションは通常、Unit セクションと Install セクションの間に挟まれます。これには主に、サービスのタイプと、systemd によるサービスの呼び出し時に実行するコマンドである実行可能ファイルのパスが含まれています。

一般的なサービス ファイル構造は次のとおりです。



[ ユニット ]

指令1 =指示

指令2 =指示



[ サービス ]

指令1 =指示

指令2 =指示



[ インストール ]

指令1 =指示

指令2 =指示

ここで、ディレクティブはそれぞれの入力を受け取るパラメータです。たとえば、 説明 ディレクティブはサービス名の文字列を受け取ります。同様の方法で、 ExecStart 実行可能ファイルの完全なパスが考慮されます。

典型的なサービス ファイルは、 ssh.サービス を以下に示します。

サービスファイルの作成方法

systemd サービスを作成するには、主要なディレクティブを理解する必要があります。このガイドでは、完全に機能するサービス ファイルの作成に役立つ重要なディレクティブについて説明します。

サービス ファイルの作成には複数の手順が必要です。まず、スクリプト ファイルの作成から始めましょう。

注記: 以下で説明する方法を続行するには、root 権限が必要です。

1. スクリプトの作成

最初のステップでは、サービスが動作を開始するときに実行されるコードの作成が含まれます。このチュートリアルでは、Linux システムの稼働時間とメモリ使用量を保存する bash スクリプトを作成しています。

現在のディレクトリに次の名前でスクリプトを作成しましょう。 マイスクリプト.sh ナノエディタを使って。

須藤 ナノ マイスクリプト.sh

次に、以下のスクリプトをファイルに追加し、 を押して保存します。 Ctrl+X その後 そして

#!/bin/bash

エコー '>>システムの稼働時間は次のとおりです<<' > / 彼自身 / マイファイル.txt

稼働時間 >> / 彼自身 / マイファイル.txt

エコー '>>これがシステムのメモリ使用量です<<' >> / / 彼自身 / マイファイル.txt

無料 -m >> / 彼自身 / マイファイル.txt

寝る 60

スクリプトにはいくつかのエコー文字列が含まれており、 稼働時間 そして 無料 コマンド。

稼働時間 Linux のコマンドは、システムの稼働時間と、過去 1 分、5 分、15 分の平均システム負荷で接続しているユーザーの数を出力するために使用されます。

無料 コマンドはシステムのメモリ使用量を出力するために使用されますが、 -m フラグは出力を出力するために使用されます。 MB

情報をテキスト ファイルに保存するには、リダイレクト演算子と呼ばれる特別な演算子を使用します。の > 演算子は、指定されたテキスト ファイルにテキストを挿入するために使用されます。ただし、ファイルがまだ存在しない場合は作成されます。一方、 >> 演算子は、ファイルにテキストを追加するために使用されます。の 寝る コマンドは、サービスのアクティビティを最低 1 分間維持するために使用されます。

次に、必要な権限を付与してスクリプトを実行可能にします。

須藤 chmod +x myscript.sh

スクリプトに実行権限が与えられました。次のセクションに進みます。

注記: サービス ファイルにエラーがないようにするには、bash スクリプトでファイルの絶対パスを使用します。

2..serviceファイルの作成

次に、次の内容でサービス ファイルを作成します。 。サービス 拡大。サービス ファイルは次の場所に作成する必要があります。 /etc/systemd/システム ディレクトリ。まず、次のコマンドを使用してこのディレクトリに移動します。 CD 指示。

CD / / システムド / システム

サービス ファイルは任意のディレクトリに作成し、後でそのファイルをこのディレクトリに移動できます。

サービスファイルを作成しています 私のサービス.サービス 名前。

須藤 ナノ 私のサービス.サービス

次に、次の行をファイルに追加します。

[ ユニット ]

説明 =私のサービス

[ サービス ]

タイプ =単純な

ExecStart = / 置き場 / バッシュ / / 彼自身 / スクリプト.sh

再起動 =失敗時

[ インストール ]

募集中 =マルチユーザー.ターゲット

ご了承ください [ユニット]、[サービス]、 そして [インストール] 大文字と小文字を区別 。 [UNIT] や [SERVICE] など、サービス ファイルのいずれかが正しく指定されていない場合、サービス ファイルは機能しません。

サービス名は次のように指定します。 私のサービス の中に 説明 の指令 [ユニット] セクション。

タイプ サービスの 単純 の中に [サービス] セクション。これがデフォルトのタイプです。 分岐 ワンショット 通知する dバス 、アイドルなどは他のタイプの一部です。

サービスをユーザー固有にしたい場合は、 ユーザー ディレクティブは、ユーザーのユーザー名と一緒に使用することもできます。このディレクティブを使用すると、サービス ユーザーの権限に依存するようになります。

一方、 ExecStart ディレクティブには実行可能ファイルのフルパスが含まれます。上記の例では、スクリプト ファイル マイスクリプト.sh に保存されています /ホーム/サム/ ディレクトリ。実際、このディレクティブは、systemd によってサービスが呼び出されたときに何を実行するかを管理します。コマンドのフルパスが指定されていない場合は、次のような絶対パスを修正するために自動的に解決されます。 /usr/local/bin /usr/bin/、 そして /置き場 。標準コマンド ディレクトリ内にある限り、実行可能ファイル名を使用してもまったく問題ありませんが、それ以外の場合は絶対パスを指定してください。セミコロン (;) で区切って複数のコマンドを使用することもできることに注意してください。

[インストール] セクションはオプションです。ただし、サービスがどのように有効化されるかを示します。の 募集中 ディレクティブは、実行レベルのターゲット ファイルをパラメータとして受け取ります。さまざまなターゲット ファイルは、システムのさまざまな実行レベルを示しました。 電源を切る 救援 マルチユーザー グラフィカルな 、 そして リブート

マルチユーザー.ターゲット これは、システムがマルチユーザーの非グラフィカル セッションを許可する状態にあるときにサービスが有効になることを意味します。

3. サービスの有効化

サービスをアクティブ化するには、まず次のコマンドを使用して systemd 構成をリロードします。 システムctl ユーティリティ。

須藤 systemctl デーモン-リロード

次に、次を使用してサービスを再度アクティブ化します。 システムctl とのコマンド 有効にする

須藤 システムctl 有効にする 私のサービス.サービス

確認するには、次のコマンドを使用してサービスのステータスを確認します。 システム制御ステータス 指示。

サービスは正常に実行されています。

では、テキストファイルを読んでみましょう マイファイル.txt で作成されたサービス /家 ディレクトリ。

一般ユーザー用の Systemd サービス ファイルを作成する方法

一般ユーザーがサービスファイルを作成する手順は、管理者がサービスファイルを作成する手順と同様です。ただし、一般ユーザー用のサービスファイルを保存するディレクトリは異なります。通常のユーザーはサービス ファイルを ~/.config/systemd/user 。このディレクトリは、 mkdir 指示。

mkdir / .config / システムド / ユーザー

一般ユーザーでサービスを有効にする場合 -ユーザー コマンドは次のように挿入されます システムctl の代わりに 須藤

システムctl - ユーザー デーモンリロード

システムctl - ユーザー 有効にする サービス名.service

システムctl - ユーザー ステータス サービス名.service

-ユーザー オプションは、ユーザーの systemd サービス ファイルを管理するために使用されます。

サービスファイルを削除する方法

サービスファイルを削除するには、まずサービスを停止する必要があります。

須藤 systemctl stop サービス名.service

を使用してステータスを確認します システム制御ステータス コマンドを使用して、サービスが停止しているかどうかを確認します。次に、次のコマンドを使用してサービス ファイルを削除します。 rm 指示。

須藤 rm / / システムド / システム / サービス名.service

ここで、リロードしてください システムド 構成。

須藤 systemctl デーモンのリロード

結論

カスタム systemd サービスは、さまざまなシナリオで有利です。このガイドでは、システム管理者向けにカスタム systemd サービス ファイルを作成する方法と、一般ユーザーがサービス ファイルを作成する方法を学びました。さらに、サービス ファイルを削除する手順も示します。