ユーザーログイン時に実行されるサービスを作成しようとしています。
非rootユーザーとして、ファイルを作成しました。
> cat ~/.local/share/systemd/user/voodoo.service
[Unit]
Description=User service test
[Service]
RemainAfterExit=yes
Type=simple
ExecStart=/bin/bash -c "touch /tmp/ok123"
[Install]
WantedBy=default.target
しかし、systemctlはそれを認識しません。
> systemctl --user restart voodoo.service
Failed to connect to bus: No such file or directory
何か案は?
最初にサービスをenable
する必要があると思います:
systemctl --user enable voodoo.service
Created symlink /home/andreatsh/.config/systemd/user/default.target.wants/voodoo.service → /home/andreatsh/.local/share/systemd/user/voodoo.service
ご覧のとおり、これは適切なフォルダにシンボリックリンクを作成するだけです。次に、実行します:
systemctl --user restart voodoo.service
そしてサービスはうまくいきました。
2つ、実際。これははるかに可能性の高いものです。
Ubuntu 15は、システム全体のサービス管理のためにsystemdに切り替えました。しかし、ユーザーごとのサービス管理は依然として新興企業の領域であり、これは16.04でも同じでした。
したがって、当然、systemctl
は、ユーザーごとにsystemd
のインスタンスを検索して対話することはありません。 systemctl
は、サービスユニットファイルを認識しなかったことをしないと言っていることに注意してください。 systemd
のユーザーごとのインスタンスと通信するための「バス」に接続できなかったと述べています。