버전 관리하에 모든 시작 구성 파일이 있습니다. upstart를 사용하는 가장 이상적인 방법은 버전 관리 리포지토리 (수은-중요하지 않음)에서 / etc / init로 소프트 링크를 만드는 것이지만 upstart는 작업을 볼 수 없습니다. 저장소 디렉토리에서 / etc / init로 파일을 복사하면 모든 것이 정상입니다.
왜 upstart가 기호 또는 하드 링크를 처리하지 못하는지 알고 있습니까?
감사
크리스
버전 관리하에 모든 시작 구성 파일이 있습니다. upstart를 사용하는 가장 이상적인 방법은 버전 관리 리포지토리 (수은-중요하지 않음)에서 / etc / init로 소프트 링크를 만드는 것이지만 upstart는 작업을 볼 수 없습니다. 저장소 디렉토리에서 / etc / init로 파일을 복사하면 모든 것이 정상입니다.
왜 upstart가 기호 또는 하드 링크를 처리하지 못하는지 알고 있습니까?
감사
크리스
답변:
부팅시로드되지 않은 파티션의 파일을 가리킬 수 있으므로 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는 해당 파일을 리포지토리의 로컬 파일로 인식하므로 다른 파일과 마찬가지로 처리합니다. 두 세계의 최고.
Upstart는 파일이 변경되거나 새 파일이 추가 될 때 구성 디렉토리를 inotify로 감시하고 구성을 다시로드합니다. 분명히 이것은 심볼릭 링크에서 작동하지 않습니다.
구성을 수동으로 업데이트하려면
$ initctl reload-configuration
전에 언급했듯이:
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
/etc/init
하드 링크를 사용해보십시오.