sytemctl - >ユニットファイルの状態が見つかりません:無効な引数

sytemctl - >ユニットファイルの状態が見つかりません:無効な引数

設定

簡単なスクリプトがあります:script.sh

#!/bin/bash
while true;do
    echo "$(date)"
    sleep 3
done

systemdのサービスユニットに含めて引き続き実行したいと思います。だから私は単純な単位ファイルを作成しました。

[Unit]
Description=test

[Service]
ExecStart=/bin/bash /home/user/p/test/system/script.sh

[Install]
WantedBy=multi-user.target

次に、/ etc / systemd / systemにあるユニットファイルへのシンボリックリンクを作成し、一意の名前を付けます。

ln -s $(readlink -f ./unit) /etc/systemd/system/superspecial.service

これでサービスを開始できます。

systemctl start superspecial

効果があるもちろん、エコーは見えませんが、見ることはできません。

systemctl status superspecial

質問

私の問題は、サービスが起動時に起動するように「アクティブ化」しようとすると、不明なエラーメッセージが表示され、検索に失敗することです。

€ systemctl enable superspecial.service
Failed to look up unit file state: Invalid argument

何が主張?ユニットファイルの状態はどうですか?私のユニットファイルに何かがありましたか?私のシステムに関するいくつかの情報:

€ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.4 LTS
Release:        20.04
Codename:       focal
€ systemctl --version
systemd 245 (245.4-4ubuntu3.16)
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN2 -IDN +PCRE2 default-hierarchy=hybrid

実行中のサービスに関するいくつかの情報:

€ systemctl status superspecial
● superspecial.service - test
     Loaded: loaded (/etc/systemd/system/superspecial.service; bad; vendor preset: enabled)
     Active: active (running) since Wed 2022-04-27 15:58:01 CEST; 14min ago
   Main PID: 13111 (bash)
      Tasks: 2 (limit: 9282)
     Memory: 540.0K
     CGroup: /system.slice/superspecial.service
             ├─13111 /bin/bash /home/user/p/test/system/script.sh
             └─20421 sleep 3

Apr 27 16:11:45 hostname bash[13111]: Mi 27. Apr 16:11:45 CEST 2022
Apr 27 16:11:48 hostname bash[13111]: Mi 27. Apr 16:11:48 CEST 2022
Apr 27 16:11:51 hostname bash[13111]: Mi 27. Apr 16:11:51 CEST 2022
Apr 27 16:11:54 hostname bash[13111]: Mi 27. Apr 16:11:54 CEST 2022
Apr 27 16:11:57 hostname bash[13111]: Mi 27. Apr 16:11:57 CEST 2022

もちろん、root権限で実行し、サービスを再起動して再起動することを繰り返し試しました。おそらく、これがsystemctlの「悪い」状態に関連しているのでしょうか?

答え1

私の場合は、コマンドを試しました。

sudo ln -s /home/username/myproject/config/systemd.conf /etc/systemd/system/myproject.service

同じ問題が発生しました。その後、次のコマンドを試しました。

sudo ln -f /home/username/myproject/config/systemd.conf /etc/systemd/system/myproject.service

-f代わりに使用します-s

答え2

ありがとうございます。あなたは正しいです。シンボリックリンクの代わりにハードリンクを使用して問題を解決しました。
readlink -fファイルエントリへの絶対パスが必要な場合は、これが私が使用するパスです。

関連情報