긴 이야기 짧게
어떻게생산하다이전 system-V 서비스의 "편집 가능한" systemd .service 파일이 있습니까?
최근 우리는 서비스가 "비활성" 상태가 아닌 "활성(종료)" 상태이기 때문에 홈브루 "서버 관리자"가 "Ubuntu 16.04.1" 서버에서 서비스를 시작할 수 없는 문제에 직면했습니다. 인터넷 검색을 통해 서비스 파일에 다음과 같은 내용을 추가할 수 있다고 알려줍니다.
Restart=always
RestartSec=3
하지만 전화해"systemctl edit myservice"를 입력하면 빈 파일이 표시됩니다.. 분명히 systemd는 "/etc/init.d/myservice" 파일을 기반으로 일부 기본 .service 파일을 생성합니다. find를 사용하여 "/run/systemd/generator.late/myservice.service" 아래에 생성된 파일이 있음을 발견했습니다. 하지만 여기에는 "Before=" 및 "After="와 같이 이 "실행"에 특정한 내용이 많이 포함되어 있으며 이를 기본으로 사용해야 하는지 잘 모르겠습니다.
나는 systemd .service 형식에 대해 아무것도 모르고 이 서버가 연중무휴로 실행되는 효율적인 서버이기 때문에 .service 파일을 처음부터 작성하고 싶지 않습니다("연습"에 사용할 수 있는 테스트 서버 복제본 없음).
답변1
systemd-sysv-generator
van Smoorenburg 스크립트로 생성된 단위를 사용하고 있으며 rc
LSB 헤더 정보가 있을 가능성이 높습니다. systemd-sysv-generator
모든 경우에 적용되는 단일 접근 방식을 취하고 약간의 추측을 통해 수정하십시오. van Smoorenburg rc
스크립트는 장기 실행 데몬을 시작할 수도 있고 시작하지 않을 수도 있고, PID 파일을 사용할 수도 있고 사용하지 않을 수도 있습니다. systemd-sysv-generator
이러한 가능성을 수용하는 서비스 단위를 생성해 보십시오.
자동으로 생성된 서비스 단위는 RemainAfterExit=true
LSB 정보가 포함된 van Smoorenburg 스크립트에서 생성됩니다. rc
따라서 스크립트를 실행하는 프로세스가 종료되고 실행 중인 프로세스가 없으면 서비스는 여전히 "활성"으로 간주되며 서비스 프로세스가 종료됩니다. 퇴장하고 나면 이게 남는다방법. 따라서 서비스가 이 active (exited)
상태로 들어갑니다.
사용을 중단 /etc/init.d/myservice
하고 systemd-sysv-generator
난수 서비스 단위로 포장하는 것에 의존하는 것을 중단해야 합니다. 공식적인 일류 서비스 단위 파일을 설정합니다.
당신은 당신에게 주어진 것부터 시작할 수 있습니다 systemctl edit --full myservice
. 하지만분명히설정이 잘못되었습니다 RemainAfterExit=true
.초보자를 위한.
물론 이것도 타당한 이유다아니요계속해서 현 상태를 유지하다아니요자동으로 생성된 서비스 단위 파일을 계속해서 사용합니다.
추가 읽기
답변2
이 질문을 유지할 가치가 있는지 잘 모르겠지만 내 오해로 인해 이 질문이 의문의 여지가 있습니다.
systemctl edit myservice
내 실수는 실제로 편집되었다고 생각한 것입니다.가득한.service
파일(명령 이름을 기반으로 사전 지식 없이 가정할 수 있듯이)이므로 이 명령을 사용하려면 먼저 파일을 작성해야 합니다. 이것은 설명된다여기.기본적
systemctl edit myservice
으로는압도적이다설정이 그렇기 때문에기본값은 비어 있습니다..실제 파일을 편집하려면 다음을 수행해야 합니다
systemctl edit --full myservice
. 내 system-V 서비스에서 이 작업을 수행하면 전체 파일이 표시됩니다.생성됨문서.