짧은 답변

짧은 답변

다음 명령을 사용하여 현재 VM 기반 인프라를 Docker 기반 인프라로 마이그레이션하려고 합니다.도커 기반 이미지, runit/runsv를 사용하여 시스템 서비스를 시작하고 감독합니다. 지금은 뻔하지만매우서비스로 작성한 Python 프로그램을 설치하는 것은 쉽지만 /etc/init.d/*스크립트를 runit 서비스로 변환하는 데 어려움을 겪고 있습니다.

때로는 쉽고 목록도 있습니다http://smarden.org/runit/runscripts.html, 그러나 일부 스크립트는 Ubuntu 경로(최신 버전)에서 작동하지 않으며 때로는 프로세스를 chroot에 포함해야 하는지 아니면 다른 사용자로 실행해야 하는지 궁금합니다.

그렇다면 Ubuntu의 init 스크립트를 간단한 runit 실행 가능 스크립트로 변환하는 안전하고 안정적인 방법이 있습니까?

답변1

짧은 답변

현재 runit을 위한 자동화된 방법은 없습니다.

긴 대답

이 문제를 해결하는 방법에는 여러 가지가 있습니다.

사전 빌드 스크립트 사용

첫 번째는 미리 작성된 스크립트 세트를 갖는 것입니다. 이는 다른 프로젝트에서 추출될 수 있습니다. Void Linux는 runit을 기본 초기화 및 하이퍼바이저로 사용하므로 관심을 가질 수 있습니다. Github에는 다음과 같은 프로젝트가 있습니다.런잇 스크립트필요한 것이 있을 수도 있습니다. 그리고 나는 내 자신의 프로젝트를 위해 뻔뻔한 플러그를 만들 것입니다.감독 스크립트, 프로젝트는 아직 개발 중이지만 일부는 미리 구워져 바로 사용할 수 있습니다.

프레임 사용

두 번째는 스크립팅으로 쉽게 전환할 수 있는 프레임워크를 제공하는 것입니다. 불을 붙이다가능성이다. 또, 따오기 네잎 클로버감독 스크립트 프레임워크(내 프로젝트와 혼동하지 마세요) 또한 당신이 찾고 있는 것을 제공할 수도 있습니다. 이 경우 미리 작성된 정의는 없지만 이 변환을 더 쉽게 만드는 데 도움이 되는 일부 셸 스크립트(및 기타 프로그램)를 얻을 수 있습니다.

기존 스크립트 및 도구 대여

세 번째는 다른 프로젝트의 스크립트를 빌리는 것입니다. 그것은 나가서 실제로 그들을 찾는 것을 의미합니다. 거기에 몇 가지가 있지만 실제로 살펴 봐야합니다.

힘들게 해봐

마지막으로 때로는 직접 작성해야 하는 경우도 있습니다. 솔직히 말해서, 절박하다면 원본 /etc/init.d/(무엇이든) 파일을 복사하여 따로 보관해 두고 해당 파일을 편집하십시오. 일반적으로 init.d 스크립트의 맨 아래에는 CASE 문과 친구들이 있습니다. 거기에서 있어서는 안 되지만 존재하는 이상한 내장 명령줄 스위치가 있는지 확인할 수 있습니다. 감독자를 사용할 때는 적용되지 않으므로 내부 start)와 내부에 있는 것 이상의 모든 것을 무시하십시오 . stop)주위를 둘러보고 /var/run/(무엇이든) 디렉토리를 설정해야 하는지 확인하세요. 그것도 항상 중요합니다(만들었다면 소유권을 설정하는 것을 잊지 마세요!). 맨 위에는 작성자가 올바르게 수행한 경우 일반적으로 다음을 포함하는 환경 변수 세트가 있습니다.진짜데몬의 이름과 해당 옵션입니다. 거기에서 일반적으로 작은 스크립트를 빠르게 함께 만들 수 있습니다.

관련 정보