web-dev-qa-db-ja.com

どうやらsystemdが.serviceファイルを見つけられない

デーモンとして実行するfooサービスのfoo.serviceファイルをまとめました。 systemctl start foo(およびstop)を実行するとサービスは正常に実行されますが、systemtcl enable fooFailed 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を実行しました。

11
user3255510

Googleのユーザー向け:

  • Sudo systemd-analyze verify NAME.serviceで検証
  • シンボリックリンクを使用するときは、絶対パスを使用するようにしてください
  • 名前が/etc/systemd/system/*.serviceのようになっていることを確認してください
  • 変更後にSudo systemctl daemon-reloadを実行します
24
Mark

私の場合の問題は、ファイルが別のパーティションからシンボリックリンクされていて、- 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.

これは問題をグーグルで検索している最中の結果であり、誰かを助けるかもしれないので、私は古い質問に答えています

10
M4ver1k

エラーは、2つのターゲットがWantedByに指定されているためです。このように言及するだけです:

[Install]
WantedBy=multi-user.target

2つのターゲットを指定する方法がわかりません。

2
ASB