Quick Flow
systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl enable nginx
sudo systemctl disable nginx
systemctl --user status myapp| 명령 | 의미 |
|---|---|
status | 현재 상태와 최근 로그 확인 |
start | 지금 시작 |
stop | 지금 중지 |
restart | 중지 후 다시 시작 |
reload | 가능한 경우 설정만 다시 읽기 |
enable | 부팅 시 자동 시작 등록 |
disable | 부팅 시 자동 시작 해제 |
서비스 관리
systemd는 많은 Linux 배포판에서 service manager 역할을 합니다. systemctl status <service>는 서비스가 실행 중인지, 마지막 종료 코드가 무엇인지, 최근 로그가 무엇인지 빠르게 보여 줍니다. 서비스 장애를 볼 때는 먼저 status를 확인하고, 그다음 journal 로그로 내려가는 흐름이 일반적입니다.
systemctl status ssh
journalctl -u ssh --since "1 hour ago"start는 현재 세션에서만 서비스를 시작하고, enable은 부팅 시 자동 시작되도록 unit을 활성화합니다. 둘은 다른 동작입니다. 서버 재부팅 후에도 서비스가 떠야 한다면 enable 여부를 확인해야 합니다.
sudo systemctl start myapp
sudo systemctl enable myapp
systemctl is-enabled myappsystem service는 보통 /etc/systemd/system이나 배포판 unit 경로를, user service는 사용자 session의 ~/.config/systemd/user 등을 사용합니다. systemctl --user는 별도 user manager를 대상으로 하며, system unit과 같은 이름이어도 상태가 다를 수 있습니다. 서버가 로그인 없이 user service를 계속 띄워야 한다면 linger 같은 session 정책까지 함께 확인합니다.
reload와 restart는 영향 범위가 다르다
reload는 서비스가 지원하는 경우 프로세스를 완전히 내리지 않고 설정만 다시 읽게 합니다. restart는 프로세스를 다시 시작하므로 연결이 끊길 수 있습니다. 웹 서버나 프록시 설정 변경처럼 reload를 지원하는 서비스는 먼저 reload 가능 여부를 확인하는 편이 안전합니다.
unit 파일 변경과 service 설정 변경은 반영 절차가 다르다
ExecStart=, environment, dependency처럼 unit 파일이나 drop-in을 바꿨다면 systemd가 파일을 다시 읽게 daemon-reload를 먼저 실행한 뒤 필요한 restart 또는 reload를 합니다. systemctl edit myapp은 원본 unit을 직접 덮어쓰기보다 drop-in을 만들어 로컬 변경을 분리할 때 적합하고, systemctl cat myapp으로 실제 적용된 본문과 drop-in을 함께 확인할 수 있습니다.
sudo systemctl edit myapp
sudo systemctl daemon-reload
sudo systemctl restart myapp
systemctl cat myapp체크포인트
| 상황 | 먼저 볼 명령 |
|---|---|
| 서비스 상태 확인 | systemctl status <service> |
| 부팅 자동 시작 여부 | systemctl is-enabled <service> |
| 실패한 서비스 목록 | systemctl --failed |
| 설정 변경 후 적용 | reload 가능 여부 확인 |
| unit 파일 수정 후 반영 | sudo systemctl daemon-reload |
| drop-in 포함 실제 unit 확인 | systemctl cat <service> |
| 상세 로그 확인 | journalctl -u <service> |
주의할 점
enable은 지금 바로 서비스를 시작하지 않고, start는 부팅 자동 시작을 보장하지 않습니다.
운영 서비스는 현재 실행 상태와 부팅 자동 시작 상태를 따로 확인하십시오.
systemctl is-active myapp
systemctl is-enabled myapp참고 링크
2 sources