Ubuntu에서 장기 실행 서버 프로세스를 어떻게 관리해야 합니까?

Ubuntu에서 장기 실행 서버 프로세스를 어떻게 관리해야 합니까?

내 서버 중 하나에서 실행해야 하는 앱(단일 바이너리 형식)이 있고 해당 앱의 수명 주기를 적절하게 제어할 수 있기를 원합니다. 내가 원하는 것은 다음과 같습니다.

  • 간단한 하나의 명령으로 시작/중지/재시작
  • 가능한 한 적은 구성으로, monit과 같은 큰 것을 설정하거나 500줄의 쉘 스크립트를 작성하고 싶지 않습니다.
  • 로그 파일에서 stdout/stderr/failure를 처리합니다.
  • 프로세스가 실행 중인 경우 pid 파일만 있는 방식으로 pidfile을 관리합니다(이것은 쉘 스크립트를 올바르게 사용하여 직접 수행하기가 정말 어려운 것 같습니다).
  • (선택 과목)바이너리가 충돌하면 뭔가를 할 수 있습니다
  • (선택 과목)서버가 재부팅되거나 애플리케이션이 충돌하면 자동으로 시작됩니다.

제가 찾고 있는 것은 많은 구성 없이도 즉시 Ubuntu Server와 이상적으로 작동하는 경량 솔루션입니다.

답변1

우분투의 경우갑자기 나타나다당신이 찾고있는 것입니다.

https://askubuntu.com/questions/19320/how-to-enable-or-disable-services 이 AskUbuntu 질문에는 현재 수행 중인 작업을 시작하는 데 대한 훌륭한 정보가 있습니다.

간단히 말해서 다음을 /etc/init/mybinary.conf에 복사하십시오.

description "My Binary"
author      "Jakub Arnold <[email protected]>"

start on (local-filesystems and net-device-up)
stop on runlevel [!2345]

respawn

pre-start script
   RUN_MODE="daemons"

end script

exec mybinary

이를 통해 다음을 수행할 수 있습니다.

  • '서비스 마이바이너리 시작/중지/상태'를 통한 서비스 관리
  • PID 파일 관리
  • 충돌 시 리스폰
  • 부팅 시 실행
  • /var/log/upstart/mybinary.log에 로깅

필요한 모든 정보가 담긴 Upstart 요리책:http://upstart.ubuntu.com/cookbook/

여담으로, Ubuntu가 Systemd를 위해 Upstart를 폐기할 계획이지만 로드맵이 제시되어 있지 않다는 점을 언급해야 한다고 생각합니다.

관련 정보