이미 Upstart 서비스가 포함 된 여러 프로젝트가 있으며 해당 서비스를 /etc/init
SVN 작업 복사본에서 직접 심볼릭 링크하는 방법을 구현하고 있습니다. Upstart는 단순히 심볼릭 링크의 대상을 읽고 추가 스크립트 또는 서비스 자체의 실행 파일을 실행할 수있는 임베디드 스크립팅을 제공합니다. 내 설정에서 중요한 것은 다음 줄뿐입니다.
cd "$ (dirname"$ (dirname "$ (readlink"/etc/init/${UPSTART_JOB}.conf ")") ")"
이렇게하면 작업 복사본에 대한 절대 경로를 하드 코딩 할 필요가 없지만 단순히 심볼릭 링크와 다양한 프로젝트의 정의 된 상대 디렉토리 레이아웃에 의존합니다. systemd에 대해 동일한 접근 방식을 구현하고 싶지만 가능한 한 많이 제안 된 개념을 고수합니다. 이는 이전에 사용한 방식으로 임베디드 스크립트를 지원하지 않는 것 같습니다.
SVN 작업 복사본에 서비스 정의systemctl enable /usr/local/.../someApp.service
를 유지할 수 있다는 것을 이미 알고 있습니다 . 내가 현재 놓친 유일한 것은 readlink
절대 경로를 하드 코딩 할 필요가 없다는 내 접근 방식을 올바르게 채택하는 것 입니다. 나는 이미 지정자 에 대해 읽었 지만 내 이해로는 절대 경로를 제공하지 않으며 심볼릭 링크를 해결하지 않습니다.
그 외에도 추가 명령 줄을 사용하여 쉘을 직접 실행할 수 있으며 이론적으로는 내 readlink
접근 방식을 거기에 포함시킬 수 있습니다. 그러나 그것은 추악 해 보입니다.
내가 염두에두고있는 또 다른 접근 방식은 시스템 전체 디스패처 스크립트이며, 이미 /usr/local/vendor
지정자를 전달할 수 있고 readlink
외부에서 내 접근 방식 을 구현하는 시스템 전체 가 있습니다 .
그러나 내가 놓친 더 쉬운 것이 있습니까? 다음과 같은 간단한 %f
것, 해결 된 심볼릭 링크 대상은 어디에 있습니까 ?
ExecStart = % f /../../ bin / someApp.pl
다음 예보다 쉬울 것 같습니다.
ExecStart = / bin / sh -c "..."
ExecStart = / usr / local / vendor / systemd / dispatcher "% f"
감사!
아니요, systemd에는이를위한 기본 제공 기능이 없습니다.
Upstart와 마찬가지로 셸을 호출해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다