デーモンとして実行するfooサービスのfoo.serviceファイルをまとめました。 systemctl start foo
(およびstop
)を実行するとサービスは正常に実行されますが、systemtcl enable foo
はFailed to issue method call: Invalid argument
になります。ユニットファイルは/etc/systemd/system/foo.service
に配置され、権限は0755です。systemdをデバッグ用に設定してenableを実行すると、
Looking for unit files in (highest priority first):`
/etc/systemd/system
/run/systemd/system
/usr/local/lib/systemd/system
/usr/lib/systemd/system
Looking for SysV init scripts in:
/etc/rc.d/init.d
Looking for SysV rcN.d links in:
/etc/rd.c
Failed to issue method call: Invalid argument
グーグルで検索すると、seemsのように、systemctlが.serviceファイルを見つけられません。それを確認する方法はありますか?もしそうなら、どうすれば修正できますか?何が悪いのかについての他のアイデアはありますか?有効にできるデバッグは他にありますか?与えられたデバッグ情報は本当に問題を絞り込むのに役立ちません。
foo.serviceは次のようになります。
[Unit]
Description=Blah Blah Blah
[Service]
ExecStart=/usr/bar/doof/foo
Type=simple
PIDFile=/var/run/foo.pid
[Install]
WantedBy=multi-user.target,graphical.target
編集:はい、私はsystemctl daemon-reload
を実行しました。
Googleのユーザー向け:
Sudo systemd-analyze verify NAME.service
で検証/etc/systemd/system/*.service
のようになっていることを確認してくださいSudo systemctl daemon-reload
を実行します私の場合の問題は、ファイルが別のパーティションからシンボリックリンクされていて、- systemdがそれをサポートしていないことです。
Unit files have to reside on a partition that is mounted at the moment the Host PID 1 is invoked. i.e. either on the root partition or some other partition that the initrd premounts.
これは問題をグーグルで検索している最中の結果であり、誰かを助けるかもしれないので、私は古い質問に答えています
エラーは、2つのターゲットがWantedBy
に指定されているためです。このように言及するだけです:
[Install]
WantedBy=multi-user.target
2つのターゲットを指定する方法がわかりません。