Linux / 명령어 / systemctl - systemd 서비스 상태 확인과 관리
systemctl은 systemd가 관리하는 서비스와 기타 유닛의 상태를 조회하고 시작·중지·재시작·부팅 시 자동 시작을 제어합니다. 서비스 장애를 조사할 때 먼저 status로 현재 상태를 확인하세요.
systemctl 명령어란?
start는 지금 실행하는 동작이고 enable은 부팅 시 시작하도록 설정하는 동작입니다. 서로 자동으로 대체되지 않습니다. active와 enabled도 각각 현재 실행 상태와 부팅 설정을 뜻합니다. 유닛 이름을 명확히 지정하고 로그는 journalctl -u로 확인합니다.
기본 문법
systemctl [옵션] 명령 [유닛]
설치된 구현과 옵션은 배포판에 따라 다를 수 있습니다. man systemctl으로 현재 시스템의 설명을 확인하세요.
사용 예제
서비스 상태 확인
예시 유닛 이름은 실제 시스템의 서비스 이름으로 바꿉니다.
systemctl status sshd.service
현재 실행 여부 확인
스크립트에서 상태를 점검할 때 종료 상태도 함께 확인합니다.
systemctl is-active sshd.service
부팅 시 자동 시작 설정 확인
현재 실행과 무관하게 enable 상태를 봅니다.
systemctl is-enabled sshd.service
서비스 상태와 실행 여부 구별하기
systemctl is-active 서비스명은 지금 실행 상태를 짧게 알려 줍니다. 다음의 서비스 이름은 환경에 맞게 바꿔야 합니다.
systemctl is-active sshd.service
서비스가 실행 중인 시스템의 예시 출력:
active
active는 현재 실행 중이라는 뜻입니다. 부팅 시 자동 시작 여부는 별개이므로 systemctl is-enabled sshd.service로 확인하세요. 서비스 이름은 배포판마다 다를 수 있으며, restart는 연결 중단을 일으킬 수 있으므로 설정 변경 뒤에는 먼저 status와 journalctl -u로 원인을 확인합니다.
start는 지금 서비스를 시작하고 enable은 부팅 시 자동 시작 설정을 바꿉니다. 둘은 서로를 자동으로 보장하지 않습니다. 유닛 파일 자체를 수정했다면 sudo systemctl daemon-reload로 정의를 다시 읽힌 뒤 필요한 서비스를 재시작하고 상태와 로그를 확인하세요.
주요 옵션과 형식
| 옵션·형식 | 설명 |
|---|---|
status 유닛 |
상태와 최근 로그 요약을 표시합니다. |
start / stop 유닛 |
유닛을 현재 시작하거나 중지합니다. |
restart 유닛 |
중지 후 다시 시작하므로 연결이 끊길 수 있습니다. |
reload 유닛 |
서비스가 지원하면 재시작 없이 설정을 다시 읽습니다. |
enable / disable 유닛 |
부팅 시 자동 시작 설정을 변경합니다. |
사용할 때 주의할 점
원격 접속 서비스나 운영 중인 웹 서비스를 stop·restart하면 접속과 요청이 중단될 수 있습니다. 유닛 이름, 변경 창구, 복구 절차를 먼저 확인하세요. daemon-reload는 변경된 유닛 정의를 다시 읽는 작업이지 서비스를 재시작하는 명령이 아닙니다. systemd가 아닌 시스템에는 적용되지 않습니다.
자주 묻는 질문
systemctl enable을 하면 서비스가 바로 실행되나요?
보통은 아닙니다. enable은 부팅 시 자동 시작 설정입니다. 지금도 실행하려면 start를 별도로 실행하거나 지원되는 --now 옵션을 사용합니다.
공식 문서
옵션의 정확한 동작과 구현별 차이는 systemctl 관련 공식 문서에서 확인할 수 있습니다.









