리눅스 systemctl 명령어 완벽 실습 가이드 - 서비스 제어부터 부팅 등록까지 한 번에 끝내기

개요

방대한 man 페이지를 일일이 읽지 않아도 실무에서 바로 써먹을 수 있는 systemctl 핵심 사용법을 실습 위주로 정리했습니다. 웹 서버 서비스를 직접 설치하고 시작, 중지, 상태 확인, 자동 실행 등록까지 필수 워크플로우를 단계별로 마스터할 수 있습니다.

실습 환경 준비 및 서비스 상태 확인 (status)

systemctl 명령어 실습 진행을 위해 실습 대상 웹 서버인 nginx 패키지를 설치합니다.

sudo apt-get update -qq && sudo apt-get install -y nginx

systemctl status 명령어는 지정한 서비스의 현재 실행 여부, 활성화 상태 및 프로세스 정보를 확인합니다.
출력 결과를 통해 Nginx 서비스가 부팅 시 자동 실행되도록 등록(enabled)되어 있으나, 현재는 정지(inactive) 상태임을 알 수 있습니다.
⚙️ [주요 옵션]

-l (--full) : 유닛 상태나 로그 정보를 화면 너비에 맞춰 생략하지 않고 전체 내용을 출력합니다.
--no-pager : 출력 결과를 less와 같은 페이저 프로그램으로 넘기지 않고 터미널 화면에 즉시 전부 출력합니다.
-t (--type) : service, socket, mount 등 지정한 유닛 유형만 필터링하여 목록을 조회합니다.
-a (--all) : 비활성화되거나 로드되지 않은 유닛을 포함하여 systemd가 관리하는 모든 유닛을 표시합니다.
--failed : 실행 중 실패(failed) 상태에 빠진 유닛만 골라서 목록을 표시합니다.

systemctl status nginx –no-pager

서비스 시작, 중지 및 재시작 제어 (start, stop, restart)

sudo systemctl stop nginx 명령어는 현재 실행 중인 Nginx 서비스를 즉시 중지합니다.
서비스 제어에는 시스템 권한이 필요하므로 sudo와 함께 실행하며, 정상적으로 중지되면 별도의 메시지 없이 프롬프트로 복귀합니다.

sudo systemctl stop nginx

systemctl is-active nginx 명령어는 지정한 서비스가 현재 활성화(실행 중) 상태인지 여부만 간결하게 확인합니다.
앞서 서비스를 중지했으므로 비활성 상태를 의미하는 inactive가 출력됩니다.

systemctl is-active nginx

sudo systemctl start nginx 명령어는 정지되어 있는 Nginx 서비스를 시작합니다.
서비스 시작 권한을 위해 sudo를 사용하며, 오류가 없으면 아무런 출력 없이 실행이 완료됩니다.

sudo systemctl start nginx

sudo systemctl restart nginx 명령어는 실행 중인 Nginx 서비스를 중지한 후 즉시 다시 시작합니다.
설정 파일 변경 사항을 새로 적용하거나 서비스를 초기화할 때 주로 사용됩니다.

sudo systemctl restart nginx

systemctl is-active nginx 명령어를 다시 실행하여 서비스의 재시작 후 상태를 확인합니다.
서비스가 정상적으로 시작되어 실행 중이므로 활성 상태를 나타내는 active가 출력됩니다.

systemctl is-active nginx

부팅 시 자동 시작 등록 및 해제 (enable, disable)

sudo systemctl enable nginx 명령어는 시스템이 부팅될 때 Nginx 서비스가 자동으로 시작되도록 등록합니다.
내부적으로 /etc/systemd/system/ 디렉터리에 해당 유닛 파일의 심볼릭 링크를 생성하여 자동 실행 환경을 구성합니다.

sudo systemctl enable nginx

systemctl is-enabled nginx 명령어는 서비스가 부팅 시 자동 시작되도록 등록되어 있는지 여부를 확인합니다.
앞서 자동 시작 등록을 완료했으므로 활성화 상태를 뜻하는 enabled가 출력됩니다.

systemctl is-enabled nginx

sudo systemctl disable nginx 명령어는 시스템 부팅 시 Nginx 서비스가 자동으로 시작되지 않도록 설정을 해제합니다.
등록 과정에서 생성되었던 심볼릭 링크를 제거하여 자동 실행 연결을 끊습니다.

sudo systemctl disable nginx

systemctl is-enabled nginx 명령어를 다시 실행하여 서비스의 자동 시작 등록 해제 상태를 확인합니다.
정상적으로 등록이 해제되었으므로 비활성화 상태를 의미하는 disabled가 출력됩니다.

systemctl is-enabled nginx

sudo systemctl enable nginx 명령어를 실행하여 Nginx 서비스가 부팅 시 다시 자동으로 시작되도록 재등록합니다.
제거되었던 심볼릭 링크가 다시 생성되어 다음 시스템 부팅 시점부터 정상적으로 자동 실행됩니다.

sudo systemctl enable nginx

전체 서비스 유닛 목록 조회 및 실패 서비스 감지 (list-units, failed)

systemctl list-units --type=service --state=running --no-pager | head -n 15 명령어는 시스템에서 현재 정상 실행(running) 중인 서비스 유닛 목록만 필터링하여 상위 15줄을 화면에 출력합니다.
출력 결과를 통해 앞서 시작한 nginx.service를 포함하여 시스템의 핵심 백그라운드 서비스들이 활성화 상태로 동작하고 있음을 확인할 수 있습니다.

systemctl list-units –type=service –state=running –no-pager | head -n 15

systemctl --failed --no-pager 명령어는 구동 과정에서 오류가 발생했거나 비정상 종료된 실패 유닛만 선별하여 조회합니다.
실행 결과 0 loaded units listed가 출력되어 현재 시스템에 실패 상태로 남아 있는 서비스가 전혀 없이 안정적으로 운영되고 있음을 나타냅니다.

systemctl –failed –no-pager

지금까지 systemctl 명령어를 활용해 리눅스 서비스를 제어하고 부팅 시 자동 실행까지 등록하는 핵심 실습을 간단하게 살펴보았습니다.
직접 명령어를 입력해 보며 systemd 환경에서 각종 서비스를 능숙하게 다루는 데 많은 도움이 되기를 바랍니다.