service 명령어 요약

Linux service 명령어 요약입니다. SysV init 호환 명령으로서의 의미, systemctl과 차이, 로그 확인, 재시작 전 검증 기준을 정리했습니다.

service 명령은 전통적인 System V init script를 실행하기 위한 호환 명령입니다. 현대 Linux 배포판 대부분은 systemd를 사용하므로, 새 운영 기준은 systemctl을 우선하고 service는 레거시 호환 명령으로 이해하는 것이 좋습니다.

기본 사용

sudo service nginx status
sudo service nginx start
sudo service nginx stop
sudo service nginx restart
sudo service --status-all

service --status-all은 init script 기준으로 상태를 나열하므로 systemd native unit 전체 상태와 다를 수 있습니다.

systemctl과 비교

sudo systemctl status nginx --no-pager
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl enable --now nginx

enable은 부팅 시 자동 시작 등록이고, start는 지금 즉시 시작입니다. 둘은 다릅니다.

언제 service를 쓰나

  • 구형 배포판이나 init script만 있는 패키지에서 사용합니다.
  • 문서가 오래되어 service 예제를 제공할 때 의미를 해석합니다.
  • systemd 환경에서도 compatibility wrapper로 동작하는 경우가 있습니다.

로그 확인

sudo journalctl -u nginx -n 100 --no-pager
sudo journalctl -u nginx -f
sudo tail -n 100 /var/log/nginx/error.log 2>/dev/null

service status 출력은 짧게 잘릴 수 있습니다. 실제 장애 분석은 journalctl과 애플리케이션 로그를 같이 봅니다.

서비스 재시작 전 확인

  1. 설정 문법 검사 명령이 있는지 확인합니다.
  2. reload로 충분한지 restart가 필요한지 구분합니다.
  3. 현재 연결이 끊겨도 되는 서비스인지 확인합니다.
  4. 재시작 후 listen 포트와 로그를 확인합니다.
sudo nginx -t
sudo systemctl reload nginx
sudo ss -lntp | grep ':80'
sudo journalctl -u nginx -S -5min --no-pager

운영 기준

  • 새 문서와 runbook은 systemctl 기준으로 작성합니다.
  • 레거시 서버에서는 service와 init script 경로를 명확히 기록합니다.
  • restart는 순간 장애를 만들 수 있으므로 변경 창과 영향 범위를 확인합니다.
  • 서비스 상태만 보지 말고 포트, 로그, 애플리케이션 health endpoint까지 확인합니다.

문서 링크

BGM EVER