![추가 읽기](https://linux55.com/image/102865/%EC%B6%94%EA%B0%80%20%EC%9D%BD%EA%B8%B0.png)
프로세스가 충돌하거나 종료될 때 프로세스를 다시 시작하기 위해(프로세스 ID를 식별한 후) 자동으로 작성할 수 있는 명령/스크립트가 있습니까?
예를 들어, 실행 가능한 bin 파일을 실행 중이고 충돌하거나 종료될 때마다 자동으로 다시 시작되기를 원합니다.
답변1
다음으로 확장이프레 세세사용에 대한 의견systemd
~에서RHEL 7 문서:
Systemd는 Linux 운영 체제의 시스템 및 서비스 관리자입니다. 이는 SysV init 스크립트와 이전 버전과 호환되도록 설계되었으며 부팅 시 병렬로 시스템 서비스 시작, 요청 시 데몬 활성화, 시스템 상태 스냅샷 지원 또는 종속성 기반 서비스 제어 논리와 같은 많은 기능을 제공합니다. Red Hat Enterprise Linux 7에서는 systemd가 Upstart를 기본 init 시스템으로 대체합니다.
기본적으로 systemd
서비스와 시스템을 전체적으로 관리합니다. 프로세스가 항상 실행되기를 원한다면 서비스처럼 작동하기를 원합니다. 맞춤형 서비스 문서를 작성하는 것은 어렵지 않습니다.
서비스 파일은 다음에 속합니다./etc/systemd/system/NAME.service
문서에 따르면
사용자 정의 서비스 파일의 예RHEL 7 문서다시:
[Unit]
Description=service_description
After=network.target
[Service]
ExecStart=path_to_executable
Type=simple
[Install]
WantedBy=default.target
파일의 기능에 대한 설명:
어디:
service_description은 로그 파일과 systemctl status 명령의 출력에 표시되는 정보 설명입니다.
After 설정을 사용하면 네트워크가 실행된 후에만 서비스가 시작됩니다. 기타 관련 서비스 또는 대상의 공백으로 구분된 목록을 추가합니다.
path_to_executable은 실제 서비스 실행 파일의 경로를 나타냅니다.
...
WantedBy는 서비스가 시작되어야 하는 하나 이상의 대상을 지정합니다. 이러한 대상을 이전 런레벨 개념을 대체하는 것으로 생각하십시오. 자세한 내용은 9.3절 “systemd 대상 사용”을 참조하십시오.
Type=simple
표준이며 에서 시작된 실행 파일이 ExecStart
계속 실행될 것이라고 가정합니다.
systemd
원래 질문으로 돌아가서, 프로세스를 서비스로 전환하는 데 사용하는 경우 이를 사용하여 systemd
서비스가 항상 실행되고 있는지 확인할 수 있습니다.
~에서RHEL 7 문서다시:
또 다른 예는 기본 프로세스가 종료된 후 30초의 지연을 두고 서비스를 다시 시작하는 구성 파일입니다.
[Service]
Restart=always
RestartSec=30
Restart=always
파일의 서비스 섹션에 옵션을 추가 하면 [Service]
.systemd
답변2
댄 번스타인의데몬 도구이를 목표로 하고 동일한 원래 메커니즘을 공유하는 일련의 도구 세트를 시작했습니다.
대부분의 경우 run
데몬으로 실행/작동하는 프로그램을 작성하고 서비스 관리자 또는 감독자 프로세스는 일반 Unix 및 Linux 메커니즘을 사용하여 이를 포크된 하위 프로세스로 모니터링합니다. 이는 수퍼유저로 실행되는 전용 서비스 관리자를 통해 시스템 전체에서 수행되거나 별도의 서비스 관리자를 통해 사용자별로 수행될 수 있습니다.
이러한 도구 세트는 모두 일관되고 일관성이 있지만 특정 상황에 필요한 도구 이외의 도구를 사용할 필요가 있는 도구는 없습니다. 믹스 앤 매치도 가능합니다. perp에서 Laurent Bercot의 execlineb
모든 유틸리티를 사용할 수 있고, nosh
runit에서 내 스크립트 인터프리터와 모든 유틸리티를 사용할 수 chpst
있습니다 service-manager
.
마찬가지로 systemd에서 실행되는 시스템 전체 또는 사용자별 서비스를 사용할 수 있습니다. systemd 단위 파일은 스크립트와 동일한 단순성을 가지며 run
필수는 아니지만 서비스 프로세스의 실행 상태 설정 방법에 대한 세밀하고 정확한 제어를 제공하지 않습니다. 물론 2017년이니까systemd로 마이그레이션하기 위한 첫 번째 규칙적용 가능합니다.
이들 모두는 부트로더에서 데몬을 시작하고, 시스템이 실행되는 동안 관리자/자동 제어 하에 데몬을 중지 및 시작하고, 다양한 실패 조건에서 데몬을 자동으로 다시 시작하기 위한 기본 기반을 제공합니다.
추가 읽기
- 조슈아 팀버먼(2012-12-29).프로세스 감독: 해결된 문제.
- 래리 두리틀(2005-06-23).유닉스 데몬 기본.
- 조나단 데보인 폴라드(2015).데몬 도구 계열. 자주 주어지는 답변입니다.
- 케빈 J. 디그라프. 서비스 모니터링을 위해 daemontools 사용.
- daemontools 서비스 예시. 접착제 논리. 2004년.
- 게릿 파프. 실행 스크립트 모음.
- 조나단 데보인 폴라드(2014).실행 중인 스크립트와 서비스 단위를 나란히 봅니다.. 자주 주어지는 답변입니다.
- 제임스 루벤 놀스(2008-11-22).CentOS 5에 Bernstein의 daemontools 설치.
- 에릭 루보(2010-03-26).CentOS 5에서 daemontools 설정 .
- https://unix.stackexchange.com/a/177395/5132
- 프로세스가 항상 실행되고 있는지 확인하십시오.
- 소스에서 우분투 또는 데비안에 daemontools를 설치하는 방법(답변에는 CentOS가 포함됩니다)