sytemctl -> 无法查找单元文件状态:参数无效

sytemctl -> 无法查找单元文件状态:参数无效

设置

我有一个简单的脚本:script.sh

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

我想通过将其包含在 systemd 的服务单元中来保持它的运行。所以我创建了一个简单的单元文件:unit

[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如果我想要文件条目的绝对路径,这正是我所使用的。

相关内容