upstart가 설정 파일에 대한 심볼릭 링크를 처리 할 수 ​​있습니까?


30

버전 관리하에 모든 시작 구성 파일이 있습니다. upstart를 사용하는 가장 이상적인 방법은 버전 관리 리포지토리 (수은-중요하지 않음)에서 / etc / init로 소프트 링크를 만드는 것이지만 upstart는 작업을 볼 수 없습니다. 저장소 디렉토리에서 / etc / init로 파일을 복사하면 모든 것이 정상입니다.

왜 upstart가 기호 또는 하드 링크를 처리하지 못하는지 알고 있습니까?

감사

크리스


1
어쩌면 Upstart 개발자가 소프트 링크를 무시하는 것이 디자인 결정 이었습니까? 어쨌든, 저장소가와 동일한 파티션에 있으면 /etc/init하드 링크를 사용해보십시오.
Steven 월요일

하드 링크를 시도했지만 작동하지 않았습니다 :-(
Chris McCauley 18.25의

라메. 실제로 심볼릭 링크는 구성을 다시로드하기위한 수동 호출없이 무시됩니다. 한숨. 나는 심볼릭 링크를 선호합니다. 내 유스 케이스의 클리너. 오 잘 저크처럼 파일을 복사 해 보겠습니다.
James T Snell

답변:


9

부팅시로드되지 않은 파티션의 파일을 가리킬 수 있으므로 Upstart는 심볼릭 링크를 지원하지 않습니다 .

conf 파일을 / etc / init / myscripts에 넣고 내 저장소의 디렉토리에 바인딩하여 내 프로젝트 에서이 문제를 해결했습니다. mount --bind /etc/init/myscripts ~/code/repo/initscripts.

이것을 / etc / fstab에 추가하면 바인딩은 영구적입니다.

/etc/init/myscripts  /home/me/code/repo/initscripts      none    bind

이것은 효과적으로 하드 링크 된 디렉토리를 제공합니다. Upstart는 conf 파일을 / etc / init에 로컬이기 때문에 conf 파일을 다른 것으로 취급합니다. 또한 DVCS는 해당 파일을 리포지토리의 로컬 파일로 인식하므로 다른 파일과 마찬가지로 처리합니다. 두 세계의 최고.


49

Upstart는 파일이 변경되거나 새 파일이 추가 될 때 구성 디렉토리를 inotify로 감시하고 구성을 다시로드합니다. 분명히 이것은 심볼릭 링크에서 작동하지 않습니다.

구성을 수동으로 업데이트하려면

$ initctl reload-configuration

이것은 나를 위해 안정적으로 작동하는 데 사용되었습니다. 최근에 스타트 업 1.3에서는 중지 된 작업에서만 작동합니다.
jcomeau_ictx

2
저에게 / etc / init /의 symlink는 작동하지만 symlink 뒤의 파일을 변경하면 upstart 도구가 파일을 다시 읽지 않습니다. 심볼릭 링크가 그 이유임을 알기까지 몇 시간이 걸렸습니다. 아무도 원하지 않는 캐시처럼 작동합니다.
peschü

1

전에 언급했듯이:

initctl reload-configuration

그러나 다음과 같은 오류가 발생하면

initctl: Rejected send message, 1 matched rules; type="method_call", sender=":1.155" (uid=1000 pid=6177 comm="initctl reload-configuration ") interface="com.ubuntu.Upstart0_6" member="ReloadConfiguration" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

sudo를 호출해야합니다.

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