웹사이트 검색

Linux의 Systemd에서 실행 중인 모든 서비스를 나열하는 방법


Linux 시스템은 다양한 시스템 서비스(예: 프로세스 관리, 로그인, syslog, cron 등)와 네트워크 서비스(예: 원격 로그인, 이메일, 프린터, 웹 호스팅, 데이터 저장소)를 제공합니다. , 파일 전송, 도메인 이름 확인(DNS 사용), 동적 IP 주소 할당(DHCP 사용) 등).

기술적으로 서비스는 백그라운드에서 지속적으로 실행되며 특히 클라이언트의 요청이 들어올 때까지 기다리는 프로세스 또는 프로세스 그룹(일반적으로 데몬이라고 함)입니다.

Linux는 일반적으로 프로세스 또는 서비스 관리자를 통해 서비스를 관리(시작, 중지, 다시 시작, 시스템 부팅 시 자동 시작 활성화 등)하는 다양한 방법을 지원합니다. 모든 최신 Linux 배포판은 아니더라도 대부분은 이제 동일한 프로세스 관리자인 systemd를 사용합니다.

시스템이란 무엇입니까?

Systemd는 Linux용 시스템 및 서비스 관리자입니다. SysVLSB init 스크립트와 호환되는 init 프로세스를 즉시 대체하며 systemctl 명령은 다음 작업을 수행하는 기본 도구입니다. systemd를 관리합니다.

Linux에서 실행 중인 서비스를 나열하는 이유는 무엇입니까?

Linux 시스템에서 실행 중인 서비스를 아는 것은 여러 가지 이유로 중요합니다. 이를 통해 리소스 활용도를 모니터링하고, 문제를 해결하고, 시스템 성능을 효율적으로 관리할 수 있습니다. Systemd는 활성 서비스에 대한 정보를 수집하는 강력한 명령을 제공하여 이 작업을 단순화합니다.

이 가이드에서는 Linux의 Systemd에서 실행 중인 모든 서비스를 나열하는 프로세스를 보여주고 모든 경험 수준의 사용자에게 포괄적인 연습을 제공합니다.

Linux의 SystemD에서 실행 중인 서비스 나열

인수 없이 systemctl 명령을 실행하면 서비스를 포함하여 로드된 모든 시스템 장치 목록이 표시됩니다(시스템 장치에 대한 자세한 내용은 시스템 문서 참조). 상태(활성 여부 여부)를 표시합니다. ).

systemctl 

systemctl의 모든 단위 나열

시스템에 로드된 모든 서비스(활성, 실행 중, 종료 또는 실패 여부)를 나열하려면 list-units 하위 명령과 --type 스위치를 service 값과 함께 사용하세요.

systemctl list-units --type=service
OR
systemctl --type=service

그리고 실행 중이거나 종료된 서비스 모두 로드되었지만 활성화된 모든 서비스를 나열하려면 다음과 같이 active 값과 함께 --state 옵션을 추가할 수 있습니다.

systemctl list-units --type=service --state=active
OR
systemctl --type=service --state=active

systemctl에 실행 중인 서비스 나열

그러나 실행 중인 모든 서비스(즉, 로드되어 활발하게 실행 중인 모든 서비스)를 빠르게 살펴보려면 다음 명령을 실행하세요.

systemctl list-units --type=service --state=running 
OR
systemctl --type=service --state=running

Systemd 단위 및 해당 상태와 관련된 주요 용어를 살펴보겠습니다.

  • 단위 – 단위는 서비스, 소켓, 장치 또는 기타 다양한 엔터티일 수 있습니다.
  • 로드 – 장치가 로드되었는지 여부를 나타냅니다. 장치를 로드할 수 있지만 반드시 활성화할 필요는 없습니다.
  • 활성 – 장치가 활발하게 실행 중인지 또는 문제가 발생하여 실패 또는 비활성 상태인지를 표시합니다.
  • SUB – 장치의 특정 상태에 대한 추가 세부정보를 제공합니다. 서비스의 경우 서비스가 실행 중(running)인지, 중지되었는지(exit) 또는 문제가 발생했는지(실패)를 나타낼 수 있습니다.
  • 설명 - 사용자가 세부 구성 파일을 자세히 조사하지 않고도 장치의 목적을 식별하고 이해하는 데 도움이 됩니다.

systemctl에 대한 별칭 만들기

이전 명령을 자주 사용하는 경우 ~/.bashrc 파일에 표시된 대로 별칭 명령을 만들어 쉽게 호출할 수 있습니다.

vim ~/.bashrc

그런 다음 스크린샷에 표시된 대로 별칭 목록 아래에 다음 줄을 추가합니다.

alias running_services='systemctl list-units  --type=service  --state=running'

파일의 변경 사항을 저장하고 닫습니다. 이제부터 "running_services " 명령을 사용하여 서버에 로드되어 활발하게 실행 중인 모든 서비스 목록을 확인하세요.

running_services	#use the Tab completion 

프로세스가 수신 대기 중인 포트 찾기

게다가 서비스의 중요한 측면은 그들이 사용하는 포트입니다. 데몬 프로세스가 수신 대기 중인 포트를 확인하려면 표시된 대로 netstat 또는 ss 명령을 사용할 수 있습니다.

플래그 -l는 모든 청취 소켓 인쇄를 의미하고, -t는 모든 TCP 연결을 표시하고, -u는 모든 UDP 연결을 표시합니다. - n은 (애플리케이션 이름 대신) 숫자 포트 번호 인쇄를 의미하고 -p는 애플리케이션 이름 표시를 의미합니다.

netstat -ltup | grep zabbix_agentd
OR
ss -ltup | grep zabbix_agentd

다섯 번째 열에는 소켓(로컬 주소:포트)이 표시됩니다. 이 경우 zabbix_agentd 프로세스는 10050 포트에서 수신 대기합니다.

실행 중인 방화벽 서비스 나열

또한 서버에 선택된 서비스나 포트에 대한 트래픽을 차단하거나 허용하는 방법을 제어하는 방화벽 서비스가 실행 중인 경우 firewall-cmd<를 사용하여 방화벽에 열려 있는 서비스나 포트를 나열할 수 있습니다. 또는 ufw 명령(사용 중인 Linux 배포판에 따라 다름)은 다음과 같습니다.

firewall-cmd --list-services   [FirewallD]
firewall-cmd --list-ports

sudo ufw status     [UFW Firewall]

지금은 여기까지입니다! 이 가이드에서는 Linux의 systemd에서 실행 중인 서비스를 보는 방법을 시연했습니다. 또한 포트 서비스가 수신 대기 중인지 확인하는 방법과 시스템 방화벽에서 열려 있는 서비스나 포트를 보는 방법도 다루었습니다.

추가할 사항이나 질문이 있으신가요? 그렇다면 아래 의견 양식을 사용하여 문의해 주세요.