GNU/Linux >> Linux の 問題 >  >> Linux

ユーザーのログイン後に systemd サービスを開始し、ユーザーのログアウト前に停止する方法

systemd を使用 すでにユーザー セッションのサポートが含まれています。実際、(無意識のうちに) 既に依存しているはずです。

サービス ディレクトリを作成する

mkdir -p $HOME/.local/share/systemd/user

サービス ファイルの作成と編集 (vim、gedit、geany など、何でも構いません)

vim $HOME/.local/share/systemd/user/my.service

恒久的なサービスの場合、おおよそ次のようになります。

[Unit]
Description=My very own Service
[Service]
Type=simple
TimeoutStartSec=0
ExecStart=/path/to/start/script arguments
[Install]
WantedBy=default.target

しかし、一度トリガーしてからうまく使いたいと思われるので、次のようなワンショット構成を使用してください。

[Service]
Type=oneshot
RemainAfterExit=true
StandardOutput=journal
ExecStart=/path/to/start/script arguments
ExecStop=/path/to/stop/script arguments
[Install]
WantedBy=default.target

もちろん、これはスクリプトが実行可能であることを前提としています。つまり、

chmod a+x /path/to/start/script
chmod a+x /path/to/stop/script

それ以外の場合は、それぞれのインタープリターへのパスを追加する必要があります:

ExecStart=/bin/bash /path/to/start/script arguments

systemd をリロードします (テストのために再ログインします)

systemctl --user enable my.service # enables the service
systemctl --user # should display your new unit in the list
journalctl --user should show the log

さらに詳しい情報が必要な場合は、たとえば Arch-Wiki を参照してください。

サービスをグローバルに定義することにより、他のユーザーに動作を拡張できます (root の場合)。これを行うには、/usr/share/systemd/user/ にサービス ファイルを作成する必要があります。 $HOME/.local/share/systemd/user にはありません .


Linux
  1. systemd RHEL 7 Linuxサーバーでサービスを開始、停止、再起動します

  2. Zimbra サービスを開始、停止、再起動する方法

  3. Systemd:After と Requires の両方を使用する

  1. Linuxでユーザーがログインする前にコマンドを実行する方法は?

  2. Linux で crond デーモンを開始、停止、再起動する

  3. systemd サービス ファイルで、USB の準備ができた後はどうすればいいですか?

  1. Linux専用サーバーでサービスを開始、停止、再起動する方法

  2. 一連のSystemdサービスファイルのユーザーを変更するにはどうすればよいですか?

  3. CentOSからClamAVサービスを停止して無効にする方法は?