このガイドでは、Linux 上でユーザー固有のサービスを作成する方法と、systemctl を使用してそれを管理する方法について説明します。
通常のユーザーサービスがある理由
通常のユーザーサービスはシステムサービスとは異なります。通常のユーザーサービスはログインユーザー中心です。このサービスは、それを作成したユーザーのセッション内でのみ機能します。
通常のユーザーサービスを作成する方法
Linux 上のユーザー固有のサービスは、 ~/.config/systemd/user ディレクトリ。このディレクトリが存在しない場合は、作成できます。
mkdir -p ~ / .config / システムド / ユーザーの -p 必要に応じて、フラグを使用して親ディレクトリを作成します。の ~ はローカル ユーザーのホーム ディレクトリを示し、次と同等です。 /ホーム/ユーザー 一方、構成ファイルの前のドットにより非表示になります。 30 分ごとにメモリ使用量をテキストに書き込む単純な bash スクリプト ファイルを作成してみましょう。という名前でスクリプトを作成しています。 スクリプト.sh 。
#! /bin/bashその間 真実
する
無料 -m >> / 家 / ユーザー / マイファイル.txt
寝る 1800
終わり
このスクリプトはどこにでも作成できますが、スクリプト内で指定されたパスが絶対パスであることを確認してください。
次に、上記のスクリプトをバックグラウンドで実行するサービスを作成しましょう。 Nano や Vim などのテキスト エディタを起動し、以下の行を貼り付けます。
[ ユニット ]説明 =私のサービス
[ サービス ]
タイプ =単純な
ExecStart = / 置き場 / バッシュ / 家 / ユーザー / スクリプト.sh
再起動 =失敗時
[ インストール ]
募集中 =デフォルト.ターゲット
[単位]セクションでは、 説明 ディレクティブにはサービスの名前が含まれるだけです。 80 文字を超えないよう注意してください。
[Service] セクションには 3 つの重要なディレクティブが含まれています。まず、 タイプ ;それは 単純 、 それから ExecStart カスタム スクリプトの実行可能ファイルが含まれています。サービスは障害が発生した場合にのみ再起動されます。
[インストール]セクションには、 募集中 ディレクティブ デフォルト.ターゲット これは、サービスがデフォルトの実行レベル (通常は multi-user.target または Graphical.target) に達したときのシステム状態で有効になることを意味します。
次に、ファイルを ~/.config/systemd/user 任意の名前のディレクトリ。名付けてますよ 私のサービス.サービス 。
通常のユーザーサービスを管理する方法
通常のユーザー サービスを管理するには、systemctl コマンドを -ユーザー フラグ。の -ユーザー flag は、ユーザーがシステムではなくサービス マネージャーに連絡していることを示します。
ユーザー固有のサービス ファイルを作成した後の最初の重要な手順は、systemd 構成ファイルをリロードすることです。
システム制御 - ユーザー デーモンリロードこれにより変更が適用されます。
サービスが実行中かどうかを確認するには、systemctl を使用します。 -ユーザー フラグとオプション。
システム制御 - ユーザー 状態 [ サービス名 ]
通常のユーザー サービスを管理するためのその他のコマンドを以下に示します。
システム制御 - ユーザー 始める [ サービス名 ]システム制御 - ユーザー 有効にする [ サービス名 ]
システム制御 - ユーザー 停止 [ サービス名 ]
システム制御 - ユーザー 無効にする [ サービス名 ]
システム制御 - ユーザー 再起動 [ サービス名 ]
システム管理者権限を持つ通常のユーザー サービスを作成する方法
ユーザーが作成するサービスは多数ありますが、実行するには管理者権限が必要です。このようなサービスは、 ユーザー ディレクティブを [Service] セクションに追加します。
の ユーザー ディレクティブを使用すると、サービスを実行するために必要な権限を持つユーザーの名前を指定できます。 管理者 。したがって、通常のユーザーが管理者権限を必要とするサービスを作成したい場合は、単に ユーザー=管理者 [Service] セクションにある項目がその仕事を行います。ただし、このサービスは、管理者がアクティブである限りアクティブなままになります。このサービスは管理者が直接制御できないことに注意してください。
結論
通常のユーザーも systemd サービスを作成できますが、それは次の場所に配置する必要があります。 ~/.config/systemd/user ディレクトリ。このサービスは、それを作成したユーザーがログインしている限り実行されます。これらのサービスも systemctl コマンドによって管理されますが、 -ユーザー フラグ。これは、サービスがシステムではなくユーザーによって呼び出されていることを systemd に伝えます。このガイドでは、カスタムの通常ユーザー サービスを作成し、それを管理するための systemctl コマンドについて説明しました。さらに、管理者権限が必要なサービスを作成する方法についても取り上げました。