Linux에서 서비스는 백그라운드에서 실행되는 프로그램입니다. 서비스는 요청 시 또는 부팅 시 시작될 수 있습니다.
Linux를 기본 운영 체제 또는 개발로 사용하는 경우 웹 서버, ssh 또는 cron과 같은 다양한 서비스를 처리할 플랫폼입니다. 실행 중인 서비스를 나열하거나 서비스 상태를 확인하는 방법을 아는 것은 시스템 문제를 디버깅할 때 중요합니다.
최근 대부분의 Linux 배포판에서는 systemd를 기본 init 시스템 및 서비스 관리자로 사용하고 있습니다.
Systemd는 Linux 시스템을 관리하기 위한 도구 모음입니다. 시스템 부팅, 서비스 관리, 파일 시스템 자동 마운트, 로그 이벤트, 호스트 이름 설정 및 기타 시스템 작업에 사용됩니다.
Linux에서 서비스를 나열하는 방법을 설명합니다.
Linux 서비스를 나열
Systemd는 서비스, 소켓, 마운트 포인트, 장치 등이 될 수 있는 유닛의 개념을 사용합니다. 단위는 i 형식의 텍스트 파일을 사용하여 정의됩니다. 이러한 파일에는 장치, 장치 설정 및 실행할 명령에 대한 정보가 포함됩니다. 파일 이름 확장명은 단위 파일 형식을 정의합니다. 예를 들어 시스템 서비스 단위 파일의 확장자는 .service입니다.
systemctl은 systemd를 제어하고 서비스를 관리하는 데 사용되는 명령줄 유틸리티입니다. systemd 생태계의 일부이며 기본적으로 모든 시스템에서 사용할 수 있습니다.
로드된 모든 서비스 장치 목록을 가져오려면 다음을 입력합니다.
sudo systemctl list-units --type service
# UNIT LOAD ACTIVE SUB DESCRIPTION
# cron.service loaded active running Regular background program processing daemon
# ...
각 출력 행에는 왼쪽에서 오른쪽으로 다음 열이 포함됩니다.
UNIT - 서비스 장치의 이름입니다.
LOAD - 장치 파일이 메모리에 로드되었는지에 대한 정보입니다.
ACTIVE - 활성, 다시 로드, 비활성, 실패, 활성화, 비활성화할 수 있는 고급 장치 파일 활성화 상태입니다. 이것은 SUB 열의 일반화입니다.
SUB - 하위 수준 장치 파일 활성화 상태입니다. 이 필드의 값은 장치 유형에 따라 다릅니다. 예를 들어 서비스 유형 단위는 비활성, 종료, 실패, 비활성 또는 실행 중 하나의 상태일 수 있습니다.
설명 - 장치 파일에 대한 간단한 설명입니다.
기본적으로 이 명령은 로드된 활성 장치만 나열합니다. 로드되었지만 비활성 장치도 보려면 --all 옵션을 전달합니다.
sudo systemctl list-units --type service --all
로드된 파일뿐만 아니라 설치된 모든 장치 파일을 보려면 다음을 사용합니다.
sudo systemctl list-unit-files
서비스 상태를 표시
서비스 상태를 확인하려면 systemctl status 명령을 사용합니다.
sudo systemctl status <service_name>.service
sudo systemctl status <service_name>입니다.서비스
알았어요.
여기서 <service_name>은 확인할 서비스 장치의 이름입니다. 예를 들어 nginx 서비스의 현재 상태를 확인하려면 다음을 수행합니다.
sudo systemctl status nginx.service
접미사 ".service"는 생략할 수 있습니다. systemctl status nginx는 systemctl status nginx.service와 동일합니다.
# ● nginx.service - A high performance web server and a reverse proxy server
# Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
# Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago
# Docs: man:nginx(8)
# Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
# Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
# Main PID: 3061064 (nginx)
# Tasks: 2 (limit: 470)
# Memory: 6.0M
# CGroup: /system.slice/nginx.service
# ├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
# └─3061065 nginx: worker process
#
# Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...
명령은 다음 정보를 인쇄합니다.
Loaded - 서비스 장치가 로드되었는지 여부와 장치 파일의 전체 경로입니다. 또한 부팅 시 장치를 시작할 수 있도록 설정되어 있는지 여부도 표시됩니다.
Active - 서비스가 활성 상태이고 실행 중인지 여부를 나타냅니다. 터미널에서 색상을 지원하고 서비스가 활성 상태이고 실행 중인 경우 점(●) 및 "활성(실행 중)" 부분이 녹색으로 인쇄됩니다. 이 선은 서비스가 실행되는 기간도 표시합니다.
Docs - 서비스 설명서입니다.
Process - 서비스 프로세스에 대한 정보입니다.
Main PID - 서비스 PID입니다.
Tasks - 장치에 포함된 작업 수 및 작업 제한입니다.
Memory - 사용된 메모리에 대한 정보입니다.
CGroup - 관련 제어 그룹에 대한 정보입니다.
서비스 상태만 확인하려는 경우 systemctlis-active 명령을 사용합니다. 예를 들어 nginx 서비스가 실행 중인지 확인하려면 다음을 실행합니다.
systemctl is-active nginx.service
# active
이 명령은 서비스 상태를 표시합니다. 서비스가 활성 상태인 경우 명령은 종료 상태 0을 반환합니다. 이 상태는 셸 스크립트 내에서 명령을 사용할 때 유용할 수 있습니다.
systemctl 명령을 사용하여 Linux 서비스를 나열하고 상태를 확인하는 방법을 보여드렸습니다.