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の場合)動作を他のユーザーに拡張できます。これを行うには、$ HOME / .local / share / systemd / userではなく/ usr / share / systemd / user /にサービスファイルを作成する必要があります。
systemctl --user
F23に仕事を?