MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
設定 - Systemdサービスユニットのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
設定 - Systemdサービスユニット
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == サービスとは、PCの起動時に自動的に実行され、バックグラウンドで仕事をするために待機するソフトウェアのことである。<br> <br> 一般的に、サービスはグラフィカルユーザインターフェースを持たず、ユーザの操作無しに動作する。<br> 最もよく知られているサービスは、Web、メール、データベース等のサーバで、Apache、MySQL等がある。<br> <br> また、ハードウェアの検出やUSBメモリの自動統合(マウント)等もサービスによって行われる。<br> <br> サービスには、システム起動時に関連するタスクやハードウェアに関連するタスクを行う"内部サービス"と、<br> その後にユーザがインストールするサービス(通常は全てのサーバサービスを含む)の2種類がある。<br> <br> 技術用語やコンピュータ用語では、サービスは伝統的にデーモンと呼ばれている。<br> そのため、サーバコンポーネントであるsshdやmysqldのように、サービスを表すプログラムの最後の文字として"d"が用いられることが多い。<br> <br> 一方、Systemdは、システムおよびセッションマネージャ(initシステム)であり、<br> コンピュータの起動プロセスからシャットダウンまでの全動作時間にわたって、システム上で動作するすべてのサービスを管理する役割を担っている。<br> <br> プロセスは常に(可能な限り)並行して起動され、起動プロセスを可能な限り短くする。<br> ここで、.serviceで終わる設定ファイルを作成して、Systemdが制御・監視するプロセスに関するコードを保持する場合をSystemd Service Unitファイルと呼ぶ。<br> <br> Systemdには、サービス、タイマ、マウントポイント、ソケット、スワップスペース、デバイス等のユニットが存在する。<br> そのため、Systemdは管理用の設定の全てをファイルから取得する。<br> <br> Systemdの用語では、これらを"ユニット"と呼び、システム全体に適用されるユニットと各ユーザ領域にのみ適用されるユニットがある。<br> <br> ユニットには、サービスを開始するためのサービスユニットや、ある時点でのアクションを(繰り返し)実行するためのタイマユニット等、様々な種類がある。<br> <br> 各タイプのユニットファイルに共通しているのは、iniファイルに似た構造をしていることである。<br> ユニットファイルは、いくつかのセクション(多くの場合、3セクション)で構成されている。<br> <br> Systemdではセクションと呼ばれ、その中に一連のキーと値のペア(Systemdではディレクティブと呼ばれる)が格納されている。<br> <br><br> == コマンドライン == コマンドラインやターミナルでSystemdを管理するツールはsystemctlと呼ばれる。<br> <br> 多くのコマンドはシステムに深く介入するため、root権限が必要である。<br> そのため、必要な操作を行うには、このコマンドをスーパユーザ権限で実行する必要がある。<br> <br><br> == ログ == Systemdは、ログ情報を中央のジャーナルに書き込む。<br> これは、<code>journalctl</code>コマンドにより読み出すことができ、検索やフィルタのオプションも含まれている。<br> <br><br> == システム全体の単位 == usr/lib/systemd/systemディレクトリには、サービスによってシステム全体にプレインストールされているユニットの全てのファイルがある。<br> <br> /etc/systemd/systemディレクトリには、ユーザが作成または編集したシステム全体のユニットの全てのファイルがある。<br> /etc/systemd/systemディレクトリと/usr/lib/systemd/systemdディレクトリで同名のユニットファイルがある場合は、<br> /etc/systemd/systemディレクトリのファイルが優先される。<br> <br><br> == ユニットの種類 == ユニットには様々な種類があり、ファイルの拡張子に応じてsystemdの扱いが異なる。<br> <br> <center> {| class="wikitable" style="background-color:#fefefe;" |+ Systemdユニットファイルの種類 |- ! style="background-color:#66CCFF;" | 種類(拡張子) ! style="background-color:#66CCFF;" | 説明 |- | .device || デバイスファイルを作成する。 |- | .mount || ファイルシステムのマウントとアンマウントをする。 |- | .path || ファイルやディレクトリの変更に応じたサービスユニットを実行する。 |- | .network || ネットワークの設定を行う。 |- | .service || サービスを設定する。 |- | .socket || プロセス間の接続を確立する。 |- | .target || ユニットのグループを定義する。 |- | .timer || Cronジョブのような定期的なタスクを実行する。 |} </center> <br> ここでは、.service拡張子のユニットについて記載する。<br> <br><br> == 独自のユニットやSystemdサービスファイルの作成 == 例えば、PC起動時に何らかのスクリプトやソフトウェアをバックグラウンドで実行したいとする。<br> そのためには、サービスユニットを作成する必要がある。<br> <br> サービスユニットを作成するための構文を、以下に示す。<br> <br> まず、/usr/lib/systemd/systemディレクトリに、ユニットファイルを作成する。<br> sudo vi /usr/lib/systemd/system/<ユニットファイル名>.service または sudo vi /etc/systemd/system/<ユニットファイル名>.service <br> # スクリプトを使用する場合 [Unit] Description = # サービスの説明を記述する After = network.target # ※指定しなくてもよい [Service] User= # ユーザ名 例. root ※指定しなくてもよい WorkingDirectory= # 実行するファイルまたはスクリプトがあるディレクトリのフルパス ※指定しなくてもよい ExecStart = # 実行するファイルまたはスクリプトへのフルパス または ファイル名のみ(WorkingDirectoryを指定する場合) Restart=always # ※指定しなくてもよい [Install] WantedBy = # multi-user.target または graphical.target等 <br> # Pythonを使用する場合 [Unit] Description = # サービスの説明を記述する After = network.target # ※指定しなくてもよい [Service] User= # ユーザ名 例. root ※指定しなくてもよい WorkingDirectory= # 実行する.pyファイルがあるディレクトリのフルパス ※指定しなくてもよい ExecStart = # <Pythonの実行ファイル> <実行する.pyファイルへのフルパス または ファイル名のみ(WorkingDirectoryを指定する場合)> # 例. /usr/bin/python3 main.py Restart=always # ※指定しなくてもよい [Install] WantedBy = # multi-user.target または graphical.target等 <br> 以下の例では、Glancesという名前のサービスファイルを作成して、Linux向けの監視ツールであるglancesをバックグラウンドで動作させている。<br> sudo vi /usr/lib/systemd/system/glances.service <br> [Unit] Description = Glances in Web Server Mode After = network.target [Service] ExecStart = /usr/bin/glances -w -t 5 [Install] WantedBy = multi-user.target <br> <code>[Install]</code>セクションでは、<code>[WantedBy]</code>キーにより、ユニットがいつ起動するかを指定する。<br> 下表に、指定することができるキーの値を示す。<br> <center> {| class="wikitable" style="background-color:#fefefe;" |- ! style="background-color:#66CCFF;" | ターゲット ! style="background-color:#66CCFF;" | 説明 |- | multi-user.target || グラフィカルログインの有無にかかわらず、マルチユーザシステム用(ランレベル3に対応) |- | graphical.target || グラフィカルログインが必要なマルチユーザシステム用(ランレベル3 + グラフィカルログインに対応) |- | rescue.target || 一般的に、シングルユーザモードはシステムのレスキュー時にのみ必要(ランレベル1に対応) |- | reboot.target || システムの再起動時にのみユニットが実行する。 |- | poweroff.target || システムのシャットダウン開始時にのみ実行するユニットである。 |- | default.target || 別の既存ターゲットへのシンボリックリンクである。<br>例えば、Ubuntuデスクトップの初期設定では、default.targetはgraphical.targetである。 |} </center> <br> サービスファイルを読み込んで、新しいサービスを追加する。<br> sudo systemctl daemon-reload <br><br> == 手動で作成したシステムのサービスユニットを有効にする == サービスユニットの作成後は、サービスを有効にして起動する必要がある。<br> <br> <サービスユニットのファイル名>において、<br> 例えば、上記で作成したglancesサービスを有効にするには、<code>sudo systemctl enable glances.service</code>となる。<br> <br> 以下のコマンドを実行して、新しいサービスユニットを読み込み・追加する。<br> sudo systemctl daemon-reload <br> サービスユニットを自動起動に設定する。<br> sudo systemctl enable <サービスユニットのファイル名> <br> サービスユニットを起動する。<br> sudo systemctl start <サービスユニットのファイル名> <br> サービスユニットの状態を確認する。<br> sudo systemctl status <サービスユニットのファイル名> <br><br> __FORCETOC__ [[カテゴリ:CentOS]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
設定 - Systemdサービスユニット
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse