Systemd에서 '링크 된'유닛 파일 활성화


10

나는 아직도 systemd에 익숙해 져 있고 무언가에 부딪쳤다. 그리 큰 문제는 아니지만이 방법에 대해 더 배우고 싶습니다. 나는 다른 곳에서 이것에 대한 언급을 찾을 수 없었다.

먼저 서비스의 사용자 지정 단위 파일이에 있어야한다는 것을 이해합니다 /etc/systemd/system. 그러나 단위 파일을 다른 곳에 배치 할 수 있다면 서버 관리에 좋습니다.

설명서에서 다음과 같이 단위 파일을 '링크'할 수 있음을 알았습니다.

systemctl link /path/to/servicename.service

위의 링크가 생성됩니다 /etc/systemd/system. 이제이 서비스를 시작 / 중지 할 수 있습니다. 표면적으로 이것은 우리가 서비스를 관리하는 좋은 방법 인 것 같습니다.

그러나 이러한 '링크 된'유닛 파일을 활성화하려고하면 실패합니다.

root@test1:/etc/systemd/system# systemctl link /root/myservice.service 
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.

root@test1:/etc/systemd/system# systemctl status myservice.service 
 * myservice.service - My Test Service
     Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)

root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory

정확히 동일한 단위 파일을 사용하지만 /etc/systemd/system링크 된 대신에 복사 하면 다음을 얻을 수 있습니다.

root@test1:/etc/systemd/system# cp -p /root/myservice.service .

root@test1:/etc/systemd/system# systemctl daemon-reload 

root@test1:/etc/systemd/system# systemctl status myservice.service 
 * myservice.service - My Test Service
     Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)

root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.

이로 인해 시스템 시작시 링크 된 단위 파일을 호출 할 수 없습니다.

이 경우 '링크'기능의 요점은 무엇입니까? 문서에서 다음과 같이 말합니다.

FILENAME 연결

장치 파일 검색 경로에없는 장치 파일을 장치 파일 검색 경로에 연결하십시오. 이것은 유닛 파일의 절대 경로를 요구합니다. 비활성화하면이 효과를 취소 할 수 있습니다. 이 명령의 효과는 장치 파일이 장치 검색 경로에 직접 설치되지 않더라도 시작 및 기타 명령에 사용할 수 있다는 것입니다.

답변:


15

매뉴얼 페이지가 잘못되었습니다.

systemctl link /root/myservice.service

systemctl enable /root/myservice.service

첫 번째로 당신이 할 수 systemctl start myservice있습니다. 두 번째는 myservice@Julien이 지적한 것처럼 자동으로을 추가하는 자동 시작을 가능하게합니다 link.

내 생각 엔 .. 하루 종일 머리를 감싸려고 했어


1
참고 systemctl enable도 할 것입니다 systemctl link필요가 ;-) 2 개 명령을 입력하지 않으려면, 그래서
줄리앙

@Julien Oh, 작년에 글을 썼을 때 우리는 :-) 마지막 달에 마침내 깨달았다 고 생각합니다!
Auspex

나는 이것에 대해 아는 사람들이 거의 없다고 생각합니다. 정말 고맙습니다!
Kyle

10

기본 경로가 아닌 다른 경로에서 서비스를 활성화 할 때는 전체 경로를 사용해야합니다. 활성화하면 다음 링크도 생성됩니다.

systemctl enable /root/myservice.service

활성화되면 서비스 이름으로 시작 / 중지 / 상태를 설정할 수 있습니다

systemctl start myservice

여기 몇 가지주의 사항이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.