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과 애플리케이션 로그를 같이 봅니다.
서비스 재시작 전 확인
- 설정 문법 검사 명령이 있는지 확인합니다.
- reload로 충분한지 restart가 필요한지 구분합니다.
- 현재 연결이 끊겨도 되는 서비스인지 확인합니다.
- 재시작 후 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까지 확인합니다.