리눅스 서비스를 재시작하기 전에, 저는 항상 실제로 실행 중인 서비스를 확인하는 것을 선호합니다. 예를 들어, 다음과 같은 시스템에서는 실행 중인 서비스가 있습니다. 체계화된, systemctl 이미 필요한 거의 모든 기능을 제공합니다. 활성 서비스, 실패한 서비스, 자동 시작, 자세한 상태 및 최신 유용한 메시지 등이 포함됩니다.
이는 특히 서버에서 그렇습니다. 재시작하세요. nginx, SSH, 마리아드 비즈니스 서비스가 상태를 확인하지 않고 운영될 경우 세션이 종료되거나 웹사이트가 중단되거나 구성 오류가 숨겨질 수 있습니다. 다음은 Linux 서비스 목록을 올바르게 표시하고, 필요한 서비스만 필터링한 다음, 재부팅이 정말 필요한지 판단하는 데 필요한 명령어입니다.
systemctl을 사용하여 활성화된 서비스를 나열합니다.
가장 직접적인 명령은 현재 로드된 서비스 유형 장치를 표시하는 것입니다.
systemctl list-units --type=service
여러 열로 구성된 목록이 표시됩니다. 가장 중요한 열은 다음과 같습니다. 짐, 활동적인, 보결 그리고 설명실제로 저는 주로 다음을 살펴봅니다. 활동적인 그리고 보결 서비스는 로드될 수 있지만, 오류로 인해 중지되거나 정상적인 동작으로 인해 종료될 수 있습니다.
현재 실행 중인 서비스만 보려면 다음 단계를 따르세요.
systemctl list-units --type=service --state=running
중단된 서비스를 표시하려면 다음을 참조하십시오.
systemctl list-units --type=service --state=exited
서비스가 표시되더라도 당황하지 마세요. 나갔다일부 프로세스는 짧은 시간 동안 작업을 시작한 후 정상적으로 종료됩니다. 문제가 있다고 단정하기 전에 해당 서비스를 검사해야 합니다.
실패한 서비스 보기
기계에 오류가 발생하면 다음 명령부터 실행하십시오.
systemctl --실패
이 기능은 systemd가 오류로 간주하는 서비스를 표시합니다. 이는 맹목적으로 재부팅하는 것보다 훨씬 유용한데, 점검해야 할 서비스의 정확한 이름을 즉시 확인할 수 있기 때문입니다.
예 :
systemctl status ssh
또는 분포에 따라 다음과 같습니다.
systemctl status sshd
출력에는 서비스 상태, 사용 중인 유닛 파일, 서비스가 실행 중인 경우 기본 PID, 그리고 최근 몇 줄의 로그가 표시됩니다. 시작 실패를 진단해야 하는 경우, 이 몇 줄의 로그가 종종 첫 번째 단서를 제공합니다.
서비스가 자동으로 시작되는지 여부 확인
서비스는 시작 시 활성화되지 않더라도 현재 활성화되어 있을 수 있습니다. 반대로, 서비스가 활성화되었지만 오류가 발생했거나 아직 시작되지 않아 중지된 경우도 가능합니다.
시작 시 유닛 파일과 해당 파일 상태를 나열하려면 다음을 참조하십시오.
systemctl list-unit-files --type=service
가장 흔한 상태는 다음과 같습니다.
활성화됨해당 서비스는 자동으로 시작되도록 설계되었습니다.장애가 있는자동으로 시작되지 않습니다.공전: 직접 활성화되지는 않지만, 다른 유닛에 의해 호출될 수 있습니다.가면을 쓴해당 서비스는 의도적으로 차단되었습니다.
특정 서비스를 확인하려면:
systemctl은 nginx를 활성화합니다.
systemctl is-active nginx
첫 번째 명령은 자동 시작에 대한 응답을 제공하고, 두 번째 명령은 현재 상태에 대한 응답을 제공합니다. 두 정보 모두 기존 정보를 대체하는 것은 아닙니다. systemctl 상태하지만 제어 스크립트나 간단한 체크리스트에서는 유용합니다.
목록에서 길을 잃지 않고 필터링하세요
서버 사용량이 많으면 전체 목록이 금방 길어집니다. 필터링 기능을 사용하면 됩니다. grep 다양한 서비스를 제공하는 종합 패키지를 찾고 계신다면:
systemctl list-units --type=service | grep ssh
페이저 없이 활성화된 서비스만 표시하려면:
systemctl list-units --type=service --state=running --no-pager
티켓이나 간략한 진단에서 더 읽기 쉬운 출력을 원하시면 다음과 같이 하세요.
systemctl list-units --type=service --state=failed --no-pager
원격 서버에서 저는 종종 다음을 추가합니다. --호출기 없음이렇게 하면 특히 SSH를 통해 빠르게 작업할 때 대화형 디스플레이에서 멈추는 현상을 방지할 수 있습니다.
재시작하기 전에 로그를 읽어보세요.
서비스에 오류가 발생한 경우, 시작하지 마십시오. 다시 시작하다먼저 신문을 살펴보세요.
journalctl -u nginx -n 50 --no-pager
실시간 로그를 확인하려면:
journalctl -u nginx -f
포트가 이미 사용 중이거나, 구성 파일이 잘못되었거나, 권한이 잘못되었거나, 종속성이 누락된 경우와 같은 오류가 발생하는 경우가 많습니다. systemd 로그가 처음이신 분들을 위해 자세한 설명도 제공해 드렸습니다. journalctl을 사용하여 마지막 Linux 부팅 로그를 읽는 방법.
점검이 완료된 후에만 재시작하십시오.
서비스가 식별되면 도구에서 허용하는 경우 해당 서비스의 구성을 확인합니다. 예를 들어 Nginx의 경우 다음과 같습니다.
nginx -t
SSH를 사용할 때는 더욱 주의해야 합니다. 잘못된 서비스를 재시작하거나 구성이 올바르지 않으면 원격 접속이 끊길 수 있습니다. 세션을 열어둔 상태에서 방화벽 설정을 확인한 후 SSH를 사용하십시오. 다시 장전하다 그 정도면 충분할 때.
sudo systemctl reload ssh
sudo systemctl restart ssh
주문 다시 장전하다 서비스가 이를 지원하는 경우, 서비스를 완전히 중지하지 않고 구성 파일을 다시 읽도록 요청합니다. 다시 시작하다 서비스가 중단되었다가 다시 시작됩니다. 이는 동일한 수준의 위험도가 아닙니다.
systemd 유닛 파일을 수정했다면, 다음과 같은 차이점도 고려해야 합니다. 데몬 재로드이 사례는 기사에서 별도로 설명했습니다. `systemctl daemon-reload` 명령어는 리눅스에서 언제 사용하는 것이 가장 적절할까요?.
서비스를 이용하기 전에 확인해야 할 간단한 체크리스트
- 관련 서비스를 나열하세요
systemctl list-units --type=service. - 다음을 사용하여 오류를 확인하세요.
systemctl --실패. - 정확한 상태를 확인하세요
systemctl status service-name. - 로그를 살펴보세요
journalctl -u 서비스 이름. - 서비스가 유효성 검사 명령을 제공하는지 확인하고 구성을 테스트하십시오.
- 선호하다
다시 장전하다가지다다시 시작하다용인될 수 있고 충분할 때.
문서화 systemctl 이 문서에는 모든 옵션이 자세히 나와 있지만, 일상적인 사용에서는 이러한 명령어로 대부분의 진단을 이미 해결할 수 있습니다. 제 조언은 다음과 같습니다. 서비스를 재시작하는 이유를 모른다면 아직 재시작하지 마십시오. 문제를 목록으로 작성하고 로그를 읽은 다음 조치를 취하십시오.