리눅스

리눅스 서버 재기동 후 서비스가 자동으로 안 뜰 때 systemctl enable disable 차이 확인하는 법

opsnote 2026. 6. 7. 22:24

리눅스 서버 재기동 후 서비스가 자동으로 안 뜰 때 systemctl enable disable 차이와 is-enabled, is-active 명령어로 자동 기동 설정과 현재 실행 상태를 확인하는 방법을 설명하는 대표 이미지

 

리눅스 서버에서 서비스를 직접 올릴 때는 보통 systemctl start를 사용합니다.

systemctl start nginx
 

그런데 분명 서비스를 켜둔 것 같은데, 서버를 재기동한 뒤 다시 확인해보면 서비스가 안 떠 있는 경우가 있습니다.

이럴 때 초보 운영자 입장에서는 이렇게 생각하기 쉽습니다.

아까 start 했는데 왜 재기동 후에는 안 떠 있지?
 

여기서 봐야 할 것이 systemctl enable입니다.

start는 지금 서비스를 켜는 명령이고, enable은 서버가 재기동될 때 자동으로 서비스가 올라오게 설정하는 명령입니다.

반대로 disable은 서버 재기동 시 자동으로 기동되지 않도록 설정하는 명령입니다.

이번 글에서는 systemctl enable과 disable 차이를 정리하고, 서버 재기동 후 서비스가 자동으로 안 뜰 때 어떤 순서로 확인하면 좋은지 정리합니다.

start와 enable은 다릅니다

초보 운영자가 가장 많이 헷갈리는 부분이 바로 이겁니다.

systemctl start nginx
 

이 명령어는 지금 nginx 서비스를 시작합니다.

하지만 이 명령어를 실행했다고 해서 서버 재기동 후에도 nginx가 자동으로 뜨는 것은 아닙니다.

자동 기동 설정은 따로 확인해야 합니다.

systemctl enable nginx
 

정리하면 이렇게 볼 수 있습니다.

start
→ 지금 서비스를 켠다

enable
→ 서버 재기동 후 자동으로 켜지게 설정한다
 

이 차이를 모르면 “서비스를 켰는데 왜 재부팅 후 안 뜨지?” 같은 상황을 만나기 쉽습니다.

서비스가 현재 떠 있는지 먼저 확인하는 방법은 아래 글에서 정리했습니다.

https://opsnote.tistory.com/27

 

리눅스 서버 서비스가 안 뜰 때 재기동부터 하지 말고 systemctl status 먼저 확인하는 법

리눅스 서버를 운영하다 보면 “서비스가 안 떠요”, “접속이 안 됩니다”, “프로세스가 죽은 것 같습니다” 같은 상황을 만날 수 있습니다.이럴 때 초보 운영자 입장에서 가장 먼저 떠오르는

opsnote.tistory.com

 

가상의 운영 상황 예시

예를 들어 운영 서버를 재기동한 뒤 웹 서비스가 자동으로 올라오지 않았다고 가정해보겠습니다.

[상황]
- 서버 재기동 완료
- nginx 서비스가 자동으로 떠 있어야 함
- 그런데 접속이 안 됨
- 확인해보니 nginx가 inactive 상태
- 이전에 systemctl start nginx는 실행한 적 있음
 

이 상황에서 바로 다시 start만 실행하면 당장은 서비스가 올라올 수 있습니다.

systemctl start nginx
 

하지만 원인은 그대로 남습니다.

자동 기동 설정이 꺼져 있다면 다음 서버 재기동 때 같은 문제가 다시 생길 수 있습니다.

그래서 아래 두 가지를 나눠서 봐야 합니다.

지금 서비스가 떠 있는가?
→ systemctl is-active nginx

서버 재기동 후 자동으로 뜨게 설정되어 있는가?
→ systemctl is-enabled nginx
 

이 두 가지를 구분하는 것이 이번 글의 핵심입니다.

1단계. systemctl enable은 자동 기동 설정입니다

enable은 서비스를 지금 당장 켜는 명령이 아닙니다.

서버 부팅 시 자동으로 시작되도록 등록하는 명령입니다.

 
systemctl enable nginx
 

이 명령을 실행하면 nginx가 서버 재기동 후 자동으로 올라오도록 설정됩니다.

하지만 주의할 점이 있습니다.

enable을 실행했다고 해서 현재 서비스가 바로 실행되는 것은 아닙니다.

예를 들어 nginx가 꺼져 있는 상태에서 아래 명령만 실행했다고 가정해보겠습니다.

 
systemctl enable nginx
 

이 경우 자동 기동 설정은 되었지만, 지금 당장 nginx가 실행되는 것은 아닐 수 있습니다.

현재 서비스까지 바로 올리려면 start도 필요합니다.

 
systemctl start nginx
 

즉, 아래처럼 나누어 이해하면 됩니다.

systemctl enable nginx
→ 다음 부팅 때 자동으로 올라오게 설정

systemctl start nginx
→ 지금 당장 서비스를 시작
 

2단계. enable --now는 설정과 실행을 같이 합니다

환경에 따라 아래처럼 한 번에 처리할 수도 있습니다.

 
systemctl enable --now nginx
 

이 명령은 두 가지를 함께 처리합니다.

enable
→ 서버 재기동 후 자동 시작 설정

--now
→ 현재 서비스도 바로 시작
 

즉, 아래 두 명령을 함께 실행하는 것과 비슷하게 이해할 수 있습니다.

 
systemctl enable nginx
systemctl start nginx
 

다만 초보 운영자라면 처음에는 enable과 start를 따로 이해하는 것이 더 안전합니다.

왜냐하면 두 명령은 목적이 다르기 때문입니다.

start는 현재 상태를 바꾸는 명령
enable은 부팅 시 자동 기동 설정을 바꾸는 명령
 

운영 서버에서는 명령어가 무엇을 바꾸는지 알고 실행하는 것이 중요합니다.

3단계. systemctl disable은 자동 기동 해제입니다

disable은 서버 재기동 시 자동으로 올라오지 않게 하는 명령입니다.

 
systemctl disable nginx
 

이 명령은 서비스를 지금 즉시 중지하는 명령이 아닙니다.

즉, nginx가 현재 실행 중인 상태에서 disable을 실행해도 지금 떠 있는 nginx가 바로 내려가는 것은 아닙니다.

정리하면 이렇게 볼 수 있습니다.

disable
→ 다음 부팅 때 자동으로 뜨지 않게 설정

stop
→ 지금 실행 중인 서비스를 중지
 

예를 들어 현재 실행 중인 서비스를 지금 중지하려면 아래 명령을 사용합니다.

 
systemctl stop nginx
 

자동 기동까지 끄려면 아래 명령을 사용합니다.

 
systemctl disable nginx
 

둘은 역할이 다릅니다.

systemctl stop nginx
→ 지금 nginx를 내림

systemctl disable nginx
→ 다음 부팅 때 nginx가 자동으로 안 뜨게 함
 

start, stop, restart 차이는 아래 글에서 먼저 정리했습니다.

https://opsnote.tistory.com/28

 

리눅스 systemctl start stop restart 차이와 restart 바로 누르면 안 되는 이유

리눅스 서버에서 서비스를 다루다 보면 systemctl start, systemctl stop, systemctl restart 명령어를 자주 보게 됩니다.초보자 입장에서는 서비스가 안 되면 일단 restart를 누르고 싶은 마음이 먼저 듭니다.sys

opsnote.tistory.com

 

4단계. start, stop, restart, enable, disable 차이 정리

헷갈릴 때는 아래처럼 기억하면 좋습니다.

systemctl start 서비스명
→ 지금 서비스를 시작

systemctl stop 서비스명
→ 지금 서비스를 중지

systemctl restart 서비스명
→ 지금 서비스를 재시작

systemctl enable 서비스명
→ 서버 재기동 후 자동 시작 설정

systemctl disable 서비스명
→ 서버 재기동 후 자동 시작 해제
 

여기서 중요한 것은 이것입니다.

start, stop, restart
→ 현재 서비스 상태에 영향을 주는 명령

enable, disable
→ 서버 부팅 시 자동 기동 설정에 영향을 주는 명령
 

즉, enable은 “지금 켜기”가 아니고, disable은 “지금 끄기”가 아닙니다.

초보 운영자라면 이 차이만 알아도 재기동 후 서비스가 안 뜨는 문제를 훨씬 잘 이해할 수 있습니다.

5단계. 자동 기동 설정은 is-enabled로 확인합니다

서비스가 서버 재기동 후 자동으로 뜨는지 확인하려면 is-enabled를 사용합니다.

 
systemctl is-enabled nginx
 

결과가 아래처럼 나오면 서버 재기동 후 자동으로 올라오도록 설정된 상태입니다.

enabled
 

반대로 아래처럼 나오면 서버 재기동 후 자동으로 올라오지 않을 수 있습니다.

disabled
 

자동 기동 설정은 현재 실행 상태와 다릅니다.

그래서 아래 두 명령을 함께 보는 것이 좋습니다.

 
systemctl is-active nginx
systemctl is-enabled nginx
 

의미는 이렇게 나눠서 보면 됩니다.

is-active
→ 지금 실행 중인지 확인

is-enabled
→ 서버 재기동 후 자동으로 뜰 설정인지 확인
 

6단계. status와 is-enabled를 같이 봐야 합니다

서비스 상태와 자동 기동 설정을 같이 확인하려면 아래처럼 봅니다.

 
systemctl status nginx --no-pager
systemctl is-enabled nginx
 

status는 지금 서비스가 어떤 상태인지 보여줍니다.

Active: active (running)
Active: inactive (dead)
Active: failed
 

is-enabled는 재기동 후 자동으로 시작될 설정인지 보여줍니다.

enabled
disabled
 

둘은 확인 목적이 다릅니다.

예를 들어 이런 조합이 가능합니다.

active + enabled
→ 지금 실행 중이고, 재기동 후에도 자동 기동 설정됨

active + disabled
→ 지금은 실행 중이지만, 재기동 후 자동으로 안 뜰 수 있음

inactive + enabled
→ 자동 기동 설정은 되어 있지만, 현재는 실행 중이 아님

failed + enabled
→ 자동 기동 시도는 하지만, 기동 실패 가능성 있음
 

특히 active + disabled 상태는 초보 운영자가 놓치기 쉽습니다.

지금은 서비스가 떠 있으니 정상처럼 보이지만, 서버를 재기동하면 자동으로 안 올라올 수 있습니다.

7단계. 서버 재기동 후 서비스가 안 뜰 때 확인 순서

서버를 재기동했는데 서비스가 자동으로 안 올라왔다면, 바로 start부터 누르기 전에 아래 순서로 보는 것이 좋습니다.

1. 현재 서비스 상태 확인
2. 자동 기동 설정 확인
3. 최근 로그 확인
4. 설정 파일 문제 확인
5. 포트 충돌 여부 확인
6. 자동 기동이 필요한 서비스인지 확인
7. 필요 시 enable 또는 start 조치
8. 조치 후 다시 status, is-active, is-enabled 확인
 

명령어로 보면 이렇게 확인할 수 있습니다.

 
systemctl status nginx --no-pager
systemctl is-active nginx
systemctl is-enabled nginx
journalctl -u nginx -n 100 --no-pager
 

만약 자동 기동이 꺼져 있다면 아래 명령을 검토할 수 있습니다.

 
systemctl enable nginx
 

현재 서비스도 같이 시작해야 한다면 아래 명령이 필요합니다.

 
systemctl start nginx
 

또는 한 번에 처리하려면 아래처럼 사용할 수 있습니다.

 
systemctl enable --now nginx
 

다만 운영 서버에서는 바로 명령어를 치기보다, 왜 disabled 상태였는지도 확인하는 것이 좋습니다.

서버 전체를 재기동해야 하는 상황이라면 사전에 확인할 항목이 더 많습니다. 재기동 전 체크리스트는 아래 글에서 정리했습니다.

https://opsnote.tistory.com/19

 

리눅스 서버 재기동 전 바로 껐다 켜지 말고 확인해야 할 체크리스트

리눅스 서버가 느려졌거나 서비스가 이상할 때, 가장 먼저 떠오르는 조치가 재기동일 때가 있습니다. 서버를 재기동하면 일단 문제가 해결되는 것처럼 보일 수 있습니다. 하지만 운영 서버에서

opsnote.tistory.com

 

8단계. disabled라고 무조건 문제는 아닙니다

systemctl is-enabled 결과가 disabled라고 해서 무조건 장애는 아닙니다.

어떤 서비스는 일부러 자동 기동을 꺼두기도 합니다.

예를 들면 이런 경우입니다.

- 수동으로만 실행하는 배치 서비스
- 장애 시 임시로 내려둔 서비스
- 특정 작업 시간에만 사용하는 서비스
- 자동 기동되면 안 되는 테스트 서비스
- 이중화 구조에서 대기 노드에 있는 서비스
- 필요할 때만 올라오는 보조 서비스
 

그래서 disabled를 봤다고 바로 enable을 치면 안 됩니다.

먼저 이 서비스가 자동 기동되어야 하는 서비스인지 확인해야 합니다.

운영 서버에서는 특히 이 부분이 중요합니다.

disabled 발견
→ 자동 기동 대상인지 확인
→ 담당자 또는 운영 기준 확인
→ 필요 시 enable 조치
 

자동 기동이 꺼진 이유를 확인하지 않고 켜버리면, 서버 재기동 후 의도하지 않은 서비스가 올라올 수 있습니다.

9단계. enabled인데도 서비스가 안 뜨는 경우

자동 기동 설정이 enabled인데도 서버 재기동 후 서비스가 안 뜰 수 있습니다.

이 경우에는 enable 문제가 아니라 서비스 기동 실패일 수 있습니다.

확인해야 할 것은 아래입니다.

- 설정 파일 오류
- 포트 충돌
- 권한 문제
- 의존 서비스 미기동
- 환경 변수 누락
- 디스크 용량 부족
- 로그 파일 쓰기 실패
- DB, Redis, 외부 API 연결 실패
 

이럴 때는 status와 journalctl을 같이 봅니다.

 
systemctl status nginx --no-pager
journalctl -u nginx -n 100 --no-pager
 

enabled는 “부팅 시 실행을 시도한다”는 의미에 가깝습니다.

실제 실행 성공까지 보장하는 것은 아닙니다.

서비스가 failed 상태라면 자동 기동 설정을 다시 만지기보다 실패 원인을 먼저 확인해야 합니다.

enabled인데 failed
→ 자동 기동 설정 문제보다 서비스 기동 실패 가능성

disabled이고 inactive
→ 자동 기동 설정이 꺼져 있거나 수동 기동 대상일 가능성
 

10단계. 자동 기동 설정 후 포트와 응답도 확인합니다

enable이나 start를 실행한 뒤에는 상태만 볼 것이 아니라 포트와 응답도 확인하는 것이 좋습니다.

 
systemctl status nginx --no-pager
systemctl is-enabled nginx
ss -lntp | grep ':80'
curl -I http://localhost
 

여기서 확인할 것은 아래입니다.

- 서비스가 active 상태인지
- 자동 기동 설정이 enabled인지
- 필요한 포트가 LISTEN 상태인지
- 로컬 curl 응답이 정상인지
 

서비스가 active여도 실제 접속이 정상이라는 뜻은 아닐 수 있습니다.

포트와 로컬 응답 확인까지 이어가야 조금 더 안전합니다.

포트 확인은 아래 글에서 자세히 정리했습니다.

https://opsnote.tistory.com/18

 

리눅스 서버 접속이 안 될 때 netstat보다 ss로 포트 확인하는 이유

리눅스 서버에서 접속이 안 될 때 가장 먼저 확인하는 것 중 하나가 포트입니다.서비스가 실행 중인지, 해당 포트가 LISTEN 상태인지, 어떤 프로세스가 포트를 잡고 있는지 확인해야 합니다.예전

opsnote.tistory.com

 

restart 후 정상 기동을 확인하는 흐름은 아래 글과도 연결됩니다.

https://opsnote.tistory.com/29

 

리눅스 서버 restart 했으면 끝이 아닙니다? systemctl 재시작 후 정상 기동 확인하는 법

리눅스 서버에서 서비스 장애가 났을 때 systemctl restart를 먼저 치는 경우가 많습니다. 그런데 실제 운영에서는 재시작 명령이 실행됐다고 해서 서비스가 정상 기동한 것은 아닙니다. 그래서 이번

opsnote.tistory.com

 

11단계. 로그도 같이 확인해야 합니다

서버 재기동 후 서비스가 자동으로 안 떴다면 로그를 같이 봐야 합니다.

 
journalctl -u nginx -n 100 --no-pager
 

애플리케이션 로그 파일이 따로 있다면 아래처럼 볼 수 있습니다.

 
tail -n 100 /app/logs/service.log
 

실시간으로 기동 로그를 확인해야 한다면 아래처럼 볼 수 있습니다.

 
tail -n 100 -f /app/logs/service.log
 

재기동 직후에는 아래 같은 메시지가 단서가 될 수 있습니다.

failed
permission denied
address already in use
syntax error
timeout
not found
connection refused
 

로그를 볼 때는 에러 한 줄만 보고 단정하지 말고, 앞뒤 흐름도 같이 보는 것이 좋습니다.

로그 확인 기본 흐름은 아래 글들과 같이 보면 좋습니다.

https://opsnote.tistory.com/20

 

리눅스 서버 로그 확인할 때 cat부터 치지 말고 tail과 less로 안전하게 보는 법

리눅스 서버에서 장애가 나거나 서비스가 이상할 때 가장 많이 확인하는 것 중 하나가 로그입니다. 그런데 초보 운영자일 때는 로그 파일을 확인하려고 바로 cat 명령어를 실행하는 경우가 있습

opsnote.tistory.com

 

https://opsnote.tistory.com/21

 

리눅스 서버 장애 났을 때 tail -f로 실시간 로그 확인하는 법

리눅스 서버에서 서비스가 이상하거나 장애가 발생했을 때, 로그를 한 번만 보고 끝내기 어려운 경우가 있습니다. 서비스를 재기동했는데 정상적으로 올라오는지, 테스트 요청을 보냈을 때 로

opsnote.tistory.com

 

https://opsnote.tistory.com/24

 

리눅스 서버 로그에서 에러 찾을 때 grep만 믿지 말고 앞뒤 흐름까지 확인하는 법

리눅스 서버에서 장애가 발생했을 때 로그 파일을 열어보면 생각보다 내용이 많습니다. 처음에는 tail이나 less로 로그를 확인하지만, 로그가 길면 눈으로 ERROR, Exception, timeout 같은 키워드를 찾는

opsnote.tistory.com

 

12단계. 운영 서버에서 enable, disable 사용할 때 주의할 점

운영 서버에서 enable이나 disable을 사용할 때는 영향도를 생각해야 합니다.

특히 아래는 조심하는 것이 좋습니다.

- 운영 서비스 자동 기동을 실수로 disable 하지 않기
- 테스트 서비스나 배치 서비스를 무조건 enable 하지 않기
- 이중화 구조에서 어떤 노드가 active인지 확인하기
- 작업 전후 설정 변경 내용을 기록하기
- 서비스명을 정확히 확인하기
- disabled 상태가 의도된 설정인지 확인하기
 

예를 들어 비슷한 서비스명이 여러 개 있을 수 있습니다.

nginx
example-app
example-app-worker
example-app-batch
example-app-admin
 

잘못된 서비스를 enable 또는 disable하면 서버 재기동 후 예상과 다르게 서비스가 올라오거나 안 올라올 수 있습니다.

서비스명을 다시 확인한 뒤 실행하는 습관이 필요합니다.

 
systemctl status example-app --no-pager
systemctl is-enabled example-app
 

13단계. 초보 운영자 기준 확인 순서

서버 재기동 후 서비스가 안 떴을 때는 아래 순서로 보면 좋습니다.

1. systemctl status 서비스명으로 현재 상태 확인
2. systemctl is-active 서비스명으로 현재 실행 여부 확인
3. systemctl is-enabled 서비스명으로 자동 기동 설정 확인
4. journalctl -u 서비스명으로 최근 로그 확인
5. 자동 기동이 필요한 서비스인지 확인
6. 필요 시 enable 또는 start 조치
7. 포트와 로컬 응답 확인
8. 다시 status와 is-enabled 확인
 

예시는 아래와 같습니다.

 
systemctl status nginx --no-pager
systemctl is-active nginx
systemctl is-enabled nginx
journalctl -u nginx -n 100 --no-pager
systemctl enable nginx
systemctl start nginx
systemctl status nginx --no-pager
ss -lntp | grep ':80'
curl -I http://localhost
 

이 순서대로 보면 “지금 안 떠 있는 문제”인지, “재기동 후 자동 기동 설정 문제”인지, “자동 기동은 되었지만 기동 실패한 문제”인지 구분하기 좋습니다.

14단계. 실무 보고 예시

서버 재기동 후 서비스가 안 올라온 상황이라면 이렇게 정리할 수 있습니다.

서버 재기동 후 서비스 상태를 확인한 결과, nginx 서비스가 inactive 상태로 확인되었습니다.
자동 기동 설정 확인 결과 disabled 상태로 확인되어,
자동 기동 설정 필요 여부를 검토하겠습니다.
 

자동 기동 설정을 변경했다면 이렇게 쓸 수 있습니다.

nginx 서비스 자동 기동 설정을 enabled 상태로 변경했습니다.
현재 서비스는 start 명령으로 기동 완료했으며,
status, 포트 LISTEN, 로컬 응답 상태를 추가 확인하겠습니다.
 

자동 기동은 되어 있지만 기동 실패라면 이렇게 정리할 수 있습니다.

nginx 서비스는 enabled 상태이나, 재기동 후 failed 상태로 확인되었습니다.
journalctl 로그 기준 설정 파일 오류 메시지가 확인되어 설정 내용을 추가 확인하겠습니다.
 

disabled가 의도된 설정일 수 있다면 이렇게 쓸 수 있습니다.

대상 서비스는 disabled 상태로 확인되었으나,
자동 기동 대상 서비스인지 운영 기준 확인이 필요합니다.
담당자 확인 후 enable 적용 여부를 판단하겠습니다.
 

이렇게 정리하면 단순히 “서비스 안 떠서 켰습니다”보다 훨씬 명확합니다.

정리하면

systemctl enable과 disable은 현재 서비스를 켜고 끄는 명령이 아닙니다.

enable
→ 서버 재기동 후 자동으로 시작되게 설정

disable
→ 서버 재기동 후 자동으로 시작되지 않게 설정
 

현재 서비스를 켜고 끄는 명령은 따로 있습니다.

 
systemctl start nginx
systemctl stop nginx
 

자동 기동 설정을 확인하려면 아래 명령을 사용합니다.

 
systemctl is-enabled nginx
 

현재 실행 상태를 확인하려면 아래 명령을 사용합니다.

 
systemctl is-active nginx
 

초보 운영자라면 이 문장만 기억해도 좋습니다.

start는 지금 켜는 것이고, enable은 재기동 후 자동으로 켜지게 설정하는 것입니다.

서비스 확인도 결국 같습니다.

확인 → 판단 → 조치 → 재확인

 

서비스 자동 기동 설정은 현재 서비스가 실행 중인지와는 다른 개념입니다.

start는 지금 서비스를 켜는 것이고, enable은 서버 재기동 후 자동으로 켜지게 설정하는 것입니다.  
그래서 서비스가 지금 떠 있는지 확인할 때는 is-active를 보고, 재기동 후 자동으로 올라올 설정인지 확인할 때는 is-enabled를 함께 봐야 합니다.

서비스 상태를 먼저 확인하는 방법은 아래 글에서 이어서 볼 수 있습니다.

https://opsnote.tistory.com/27

 

리눅스 서버 서비스가 안 뜰 때 재기동부터 하지 말고 systemctl status 먼저 확인하는 법

리눅스 서버를 운영하다 보면 “서비스가 안 떠요”, “접속이 안 됩니다”, “프로세스가 죽은 것 같습니다” 같은 상황을 만날 수 있습니다.이럴 때 초보 운영자 입장에서 가장 먼저 떠오르는

opsnote.tistory.com


리눅스 서버 장애 대응 전체 흐름은 아래 글에서 함께 보면 좋습니다.

https://opsnote.tistory.com/69

 

초보 운영자를 위한 리눅스 서버 장애 대응 순서 총정리

리눅스 서버를 운영하다 보면 어느 날 갑자기 이런 말을 듣게 됩니다.서버가 느립니다.접속이 안 됩니다.서비스가 안 뜹니다.디스크가 가득 찼습니다.로그가 계속 쌓입니다.재기동하면 될까요?

opsnote.tistory.com