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

물론 루트 권한으로 실행하고 서비스를 재부팅하고 다시 시작하는 것을 반복해서 시도했습니다. 아마도 이것이 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파일 항목에 대한 절대 경로를 원할 경우 이것이 바로 제가 사용하는 경로입니다.

관련 정보