systemctl을 사용하여 Linux 서비스를 나열하는 방법

게시 됨: 2022-10-23
bash 프롬프트를 표시하는 Linux 노트북
Fatmawati achmad zaenuri/Shutterstock.com
systemd가 있는 Linux 시스템에서 실행 중인 모든 서비스를 보려면 "systemctl --type=service --state=running" 명령을 사용하십시오. 그러면 각 활성 서비스의 이름, 로드, 하위 상태 및 설명이 표시됩니다. 상태 값을 변경하여 사용 불능, 종료, 실패 또는 비활성 서비스를 볼 수도 있습니다.

Linux 컴퓨터는 서비스 또는 데몬이라는 많은 백그라운드 작업에 의존합니다. 시스템 기반 배포판에는 어떤 서비스가 실행 중, 비활성화 또는 실패했는지 확인할 수 있는 내장 명령이 있습니다.

서비스 및 데몬

서비스와 데몬은 사용자 인터페이스 없이 실행되는 백그라운드 작업이며 사람의 개입이 필요하지 않으며 일반적으로 컴퓨터가 부팅될 때 시작됩니다.

한때 서비스는 init 에 의해 시작되었는데, 이는 가장 먼저 시작된 프로세스였습니다. 서비스의 세부 사항은 "/etc/init/d" 디렉토리에 있는 스크립트 모음에 보관되어 있습니다. 비 시스템 배포판에서는 여전히 그렇습니다.

systemd 세계에서 서비스는 이제 시작되는 첫 번째 프로세스인 systemd 에 의해 시작됩니다. 서비스의 세부 사항은 "/usr/lib/systemd" 디렉토리에 있는 단위 파일 에 저장됩니다.

매뉴얼 페이지에 따르면 systemd 는 시스템 및 서비스 관리자입니다. systemctl 명령을 사용하여 서비스 및 데몬을 포함하여 systemd 시스템의 다양한 측면을 검사하고 제어할 수 있습니다.

여기에서는 systemd 관련 명령을 살펴보고 있으므로 가장 먼저 알아야 할 것은 systemd 기반 배포를 실행 중인지 여부입니다.

관련: Linux의 systemd가 몇 년이 지난 후에도 여전히 분열적인 이유

초기화 또는 시스템 기반?

대부분의 Linux 배포판은 Arch, Red Hat, Debian을 포함한 systemd와 이들에서 파생된 많은 배포판을 사용합니다. 여기에는 Ubuntu 배포판 제품군, Fedora 및 해당 스핀, Manjaro 및 기타 Arch 기반 배포판이 포함됩니다.

그러나 systemd를 사용할 필요가 없도록 특별히 생성된 이러한 배포판의 포크 또는 특징이 있습니다. 뿐만 아니라 runit 또는 s6-linux-init와 같이 배포판에서 기본적으로 제공되는 시스템 대신 누군가가 사용하도록 선택할 수 있는 다른 초기화 시스템이 있습니다.

systemd로 시작 시 Linux 프로그램을 실행하는 방법
관련 systemd로 시작 시 Linux 프로그램을 실행하는 방법

직접 설정하지 않은 Linux 컴퓨터를 관리해야 하는 경우 시스템이 사용 중인지 여부를 확인하는 유일한 방법은 확인하는 것입니다. pstree 명령으로 프로세스 트리를 보면 그렇게 할 수 있습니다. 우리는 트리의 맨 위만 볼 필요가 있습니다. 결국 실행되는 맨 처음 프로세스를 찾고 있으므로 head 명령을 통해 출력을 파이프하고 처음 5개 항목을 요청합니다.

 프스트리 | 머리 -5 

헤드를 통해 파이프된 pstree를 사용하여 Linux 설치에서 systemd를 사용 중인지 확인

systemd 는 부팅 후 실행되는 첫 번째 프로세스이므로 Linux의 systemd 기반 설치에 있음을 알 수 있습니다.

관련: Linux 터미널에서 프로세스를 관리하는 방법: 알아야 할 10가지 명령

systemctl을 사용하여 서비스 나열

서비스 및 데몬을 나열하는 명령은 systemctl 입니다. typestate 옵션을 사용하여 systemctl 명령을 구체화할 수 있습니다. 우리는 systemctl 이 실행 상태에 있는 서비스에 대해 보고하도록 요청하고 있습니다.

 systemctl --type=service --state=실행 중 

systemctl을 사용하여 실행 중인 서비스 나열

정보 테이블이 생성됩니다. 터미널 창에 less 너무 넓거나 길면 기본 파일 뷰어에 표시되며, 이는 .

적은 파일 뷰어에 표시되는 systemctl 호출의 출력

테이블의 오른쪽 끝을 보려면 오른쪽 화살표 키를 누르십시오. 일반 보기로 돌아가려면 왼쪽 화살표 키를 누릅니다.

적은 파일 뷰어에 표시되는 systemctl 호출의 출력 오른쪽 섹션

Q 키를 눌러 less에서 종료합니다. 표시되는 열은 다음과 같습니다.

  • 단위 : 서비스 또는 데몬의 이름입니다. 이 칼럼의 제목은 "Unit"입니다. 왜냐하면 이 칼럼에 있는 모든 것이 단위 파일에 있는 정보 systemd 를 사용하여 시작되었기 때문입니다.
  • 로드 : 서비스 또는 데몬의 로드 상태입니다. 로드, 찾을 수 없음, 잘못된 설정, 오류 또는 마스킹될 수 있습니다.
  • 활성 : 서비스 또는 데몬이 있는 전체 상태입니다. 활성, 다시 로드, 비활성, 실패, 활성화 또는 비활성화일 수 있습니다.
  • SUB : 서비스 또는 데몬의 하위 상태입니다. 작동 중지, 종료, 실패, 비활성 또는 실행 중일 수 있습니다.
  • 설명 : 장치에 대한 간략한 설명입니다.

단일 서비스에 집중하려면 grep 을 통해 systemctl 의 출력을 파이프할 수 있습니다. 이 명령은 ssh 서비스에 대한 테이블 항목을 격리합니다.

 systemctl --type=service --state=실행 중 | 그렙 SSH 

grep을 사용하여 결과에서 단일 서비스 분리

지금까지 state=running 옵션을 제공하여 테이블의 내용을 필터링했습니다. 대신에 하위 상태의 가능한 값을 사용할 수 있습니다: dead, exited, failed, inactive, running.

실패한 서비스를 찾아보겠습니다.

 systemctl --type=service --state=실패 

systemctl로 실패한 서비스 보고

하위 상태의 조합을 사용할 수 있습니다. 쉼표로 구분된 목록으로 입력합니다. 옵션 사이에 공백을 포함하지 않았는지 확인하십시오. 상태 중 하나와 일치하는 서비스를 찾습니다.

 systemctl --type=service --state=실패, 종료 

systemctl로 실패했거나 종료된 서비스 찾기

오른쪽 화살표 키를 눌러 오프스크린 열을 보면 목록에 종료된 서비스와 실패한 서비스가 혼합되어 있음을 알 수 있습니다.

systemctl에서 찾은 실패한 서비스와 종료된 서비스의 혼합

기본적으로 systemctlsystemd systemd 시작한 프로세스(서비스 및 데몬)를 나열합니다. 그렇기 때문에 이 모든 과정의 약칭이 "단위"입니다.

명시적으로 systemctl 에 단위를 나열하도록 요청하는 옵션이 있지만 기본 작업이므로 자주 사용되지 않습니다.

이러한 명령은 동일한 결과를 생성합니다.

 sudo systemctl 목록 단위 --유형=서비스 --상태=실행 중
 sudo systemctl --type=service --state=실행 중

systemctl을 사용하여 단위 파일 나열

list-unit-files 옵션을 포함하여 systemctl 명령의 범위를 확장할 수 있습니다. 이것은 시작된 서비스와 데몬에 대한 보고뿐만 아니라 컴퓨터에 설치된 모든 단위 파일 도 나열합니다.

 systemctl 목록 단위 파일 --state=활성화 

systemctl을 사용하여 단위 파일 나열

컬러 테이블이 표시됩니다.

적은 파일 브라우저에 표시되는 systemctl에 의해 생성된 단위 파일 목록

state 옵션을 제거하면 필터링이 제거됩니다. 출력에는 상태에 관계없이 설치된 모든 단위 파일이 포함됩니다.

 systemctl 목록 단위 파일 

systemctl을 사용하여 필터링 없이 단위 파일 나열

출력에는 이전 명령의 결과보다 더 많은 항목이 포함됩니다.

systemctl에 의해 나열되고 더 적은 파일 브라우저에 표시되는 모든 단위 파일

테스트 컴퓨터에서 결과 목록은 이전 명령의 출력보다 거의 4배 더 깁니다.

state 옵션을 사용하고 싶다면 앞에서 본 것처럼 여러 상태를 사용할 수 있습니다. 동일한 규칙이 적용됩니다. 옵션을 쉼표로 구분된 값으로 제공하고 공백을 포함하지 마십시오.

이 명령은 비활성화되었거나 실행에 실패한 모든 단위 파일을 나열합니다.

 systemctl list-unit-files --state=활성화, 실패 

systemctl을 사용하여 두 상태 중 하나와 일치하는 단위 파일 찾기

상태 옵션으로 선택한 항목에 따라 필터링된 감소된 수의 결과가 표시됩니다.

systemctl에서 찾은 비활성화 및 실패한 단위 파일의 혼합

하나의 서비스를 자세히 살펴보기

하나의 서비스나 데몬에 대한 내용이 관심을 불러일으키고 더 자세히 알아볼 가치가 있는 경우 systemctl 상태 옵션을 사용하여 자세히 볼 수 있습니다.

SSH 데몬인 sshd를 살펴보겠습니다. 상태 옵션과 서비스 또는 데몬의 이름을 사용하기만 하면 됩니다.

 systemctl 상태 SSHD 

systemctl에 의해 표시되는 단일 서비스의 세부 정보

이 소형 디스플레이에는 다음이 표시됩니다.

  • 짧은 설명과 함께 서비스 이름입니다. 색상으로 구분된 점은 실행 중인지 여부를 보여줍니다. 녹색은 실행 중임을 의미하고 빨간색은 실행 중이지 않음을 의미합니다.
  • 단위 파일의 경로를 포함하여 로드된 항목입니다.
  • 얼마나 오랫동안 실행되었습니다.
  • 설명서가 man 에 있는 곳입니다.
  • 실행 중인 인스턴스의 프로세스 ID입니다.
  • 실행 중인 이 서비스의 동시 인스턴스 수입니다. 보통 이것은 하나일 것입니다.
  • 얼마나 많은 메모리가 사용되고 있습니다.
  • CPU 시간이 얼마나 소모되었는지.
  • 서비스가 속한 제어 그룹입니다.

시스템 로그의 관련 항목도 표시됩니다. 일반적으로 서비스 시작과 같은 이벤트입니다. 올바르게 시작되지 않은 서비스나 데몬을 찾고 있는 경우 유용한 정보가 될 수 있습니다.

관련: journalctl을 사용하여 Linux 시스템 로그를 읽는 방법

자율 시스템

서비스와 데몬은 운영 체제의 많은 자동 작업을 제공하므로 매우 중요합니다. 그것은 그들의 건강도 중요하다는 것을 의미합니다.

서비스, ​​데몬 및 단위 파일에 대한 보기를 얻는 것은 쉽고 유익합니다. 서비스나 데몬이 시작을 거부하는 경우에도 유용한 문제 해결 단계입니다.

관련: Linux에서 "열린 파일이 너무 많습니다" 오류를 해결하는 방법