"서비스 재시작"과 "서비스 재로드"의 차이점은 무엇입니까


74

나는 사이의 차이를 이해하기 위해 노력하고있어 service restart [someservice]service reload [someservice]. "다시 시작"은 서비스를 다시 시작하지만 "다시로드"는 구성을 다시로드한다는 점을 이해하지만 주어진 컨텍스트에서 사용해야 할 사항을 결정하기에 충분한 실제 영향을 이해하지 못합니다.

예 : PostgreSQL 설정에 대해 읽은 대부분의 가이드에 따르면 원격 연결을 허용하기 위해 postgresql.conf 및 pg_hba.conf를 편집 한 후에는 발행해야한다고 말합니다 sudo service postgresql restart. 그러나 위의 설명에 따라 어느 것을 사용해야하는지 추측하고 있다면 "재로드"를 선택합니다.

중요한 경우, 나는 Ubuntu 11.10에 있습니다.하지만 가능한 한 일반적으로 적용 가능한 설명을 원합니다.


2
몇 년 전에 수천 명의 사용자가있는 서버를 운영하고있었습니다. 아파치를 다시 시작하는 것은 어떤 이유로 빠르지 않았으므로 아파치를 다시 시작하는 데 약 3 분이 걸렸습니다 (이유). 어쨌든 서버가 3 분 동안 다운되면 상사는 약 800 개의 전화를받습니다. 서비스를 다시로드하면 전화가 0 번 울립니다. 그 차이입니다.
j0h

답변:


41

당신이 말한 내용이 정확 reload하면 서비스가 구성 파일을 다시로드하도록 지시합니다. 즉, 구성을 다시로드하기에 충분해야합니다. 그러나 "규칙을 따르지 않음"또는 구성 파일을 다시로드하지 않는 특정 서비스가있을 수 있습니다. 이로 인해 아마 더 안전 할 것입니다 restart. 나는 개인적으로 사용 postgresql하지 않으므로 모르겠습니다.


1
한편,reload-or-restart
Suuuehgi

PostgreSQL의 경우 재로드와 함께 /etc/postgresql/version/main/postgresql.conf에 변경 사항을 적용 할 수 있습니다. pg_hba.conf에 변경 사항을 적용하려면 다시 시작해야합니다.
Aidan Melen

63
  • 다시 시작 = 중지 + 시작
  • 다시로드 = 계속 실행 + 구성 파일을 다시 읽습니다.

8

모든 서비스가 지원되는 것은 아닙니다 reload. 그렇게하는 경우 일반적으로 다시 시작하는 것이 좋습니다 (즉, 다시로드하면 다운 타임이 줄어든다).

데비안 정책 매뉴얼 은 모든 /etc/init.d/스크립트가 force-reload액션을 지원하도록 지정합니다.reload, 서비스가이를 지원하는지, 그리고 restart서비스가 다시로드를 지원하지 않는지 를 의미 합니다 .

그것이 어떻게 현대 우분투 신생 세계로 어떻게 번역되는지 잘 모르겠습니다.


1
데비안 정책 매뉴얼은 정말 유용한 링크였습니다.
패치

1
시스템 서비스를 통하지 않는 경우 대부분의 재로드 지원 /etc/init.d/SomeProgram reload
j0h

4

عبد النور التومي 를 확장하려면 systemd에 대한 나의 경험으로 대답하십시오.

프로세스가 시작될 때마다 systemd에서 프로세스는 시스템 컨텍스트 내에서 실행되며, 가장 명확한 예는 단위 파일에 정의 된 환경 변수를 사용하는 것입니다.

따라서 systemctl reload [someservice]신호 를 보낼 때 지원되는 경우 신호를 서비스에 보내 정상적으로 다시로드됩니다. 그렇지 않으면 프로세스는 단순히 신호를 무시합니다. 그래도 구성 할 수 있습니다.

우아하게 무엇을 의미합니까? 새 구성 또는 코드로 새 작업자를 시작하고 현재 요청이있는 경우 이전 작업자를 중지합니다.

그리고 systemctl restart [someservice]서비스가 중지되도록 시스템 ctl에 지시하면 현재 시스템 컨텍스트를 삭제하고 새 컨텍스트를 작성하고 서비스를 다시 실행하십시오. 예를 들어 시스템 컨텍스트에서 환경 변수를 다시로드하거나 다시로드가 지원되지 않는 경우에 적합합니다.

희망이 조금 명확 해지기 때문에 뭔가 잘못되면 알려주세요.


0

현재 서비스가 시작되어야하는 경우 (예 : 구성 파일이 변경됨) 서비스에 알릴 수 있지만 다시 시작됩니다. 서비스가 이미 실행 중이라면 다시로드가 완료되면 좋을 것입니다 (그러나 일부 파일은 다시 시작해야하고 다른 파일은 다시로드 해야하는 서비스가 있다고 가정하지만).

내가 생각할 수있는 가장 복잡한 예는 Apache와 같습니다. 일반적으로 다시로드하도록 요청할 수 있지만 때로는 모듈을 추가 / 제거하는 경우 대신 다시 시작을 요청해야합니다.


0

postgres는 나중에 모든 데이터베이스 클라이언트의 연결을 끊어야하기 때문에 재로드와 재시작의 큰 차이에 대한 좋은 예입니다.

연결이 롤백되지 않아야하는 경우 pg_ctlcluster 를 사용하여 처음에 "--force"없이 서비스를 중지 할 수 있습니다 .

/etc/postgres/{version}/{dbname}/postgresql.conf 과에서 http://www.postgresql.org/docs/manuals/ 모든 매개 변수 "이 매개 변수는 서버 기동시 만 설정 될 수 같은 발언이있다. "

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.