
내가 회사에서 맡고 있는 업무 중 서버 관리를 해야 하는 업무가 있다.
우리 회사에서는 서버를 온-프레미스 방식으로 관리 하고 있다.
그렇기에 서버에 올라와있는 여러 프로세스들을 관리 해주어야 하는데, MySQL 프로세스를 관리할 때 꼭 앞에 service 라는 키워드를 붙여야 된다는 것이다.
왜 해당 키워드를 붙여야 하는건지에 대해서 이번 기회에 궁금증이 생겨서 공부를 해보았다.
해당 글은 CentOS7 버젼을 기준으로 작성되었습니다.
왜 mysql을 시작할 때 앞에 service를 붙이는 걸까?
service는 리눅스 시스템 서비스를 조작하기 위해 사용하는 명령어이다.
시스템 서비스 명령어는 리눅스 /etc/init.d 디렉토리에 있는 링크 파일들 중에 시작이나 종료 재시작을 선택할 수 있다.
/etc/init.d 디렉토리에는 리눅스에서 사용할 수 있는 프로그램 실행 파일의 링크 파일이 위치하는 곳으로 service 명령어를 사용하여 해당 프로그램을 시작하거나, 종료, 재시작을 명령할 수 있다.
start : 중지된 서비스 싲가stop : 실행되는 서비스 중지restart : 멈춘 후 실행 서비스 시작 또는 중지된 서비스 시작reload : 연결을 끊지 않은 채 서비스 설정 리로드status : 서비스 실행 여부를 나타냄
위 사진같이 mysql이 /etc/init.d 디렉토리 아래에 있는 걸 확인 할 수 있다.
그렇다면 해당 디렉토리 아래에 파일을 위치 시키는 것만으로도 서비스 등록을 할 수 있을까?
/etc/init.d 디렉토리 아래에 서비스 스크립트를 작성한다.#!/bin/bash
# My Custom Service
case "$1" in
start)
echo "Starting My Custom Service"
/path/to/your/service/script.sh start
;;
stop)
echo "Stopping My Custom Service"
/path/to/your/service/script.sh stop
;;
restart)
echo "Restarting My Custom Service"
/path/to/your/service/script.sh restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
위 코드는 start, stop, restart에 따라 각각 분기 처리를 해주는 로직을 가지고 있다.
만약 톰캣을 서비스로 등록하고자 한다면 start시 bin/startup.sh을 작성해주면 된다.
sudo chkconfig --add my_service
chkconfig은 리눅스 시작 프로그램을 관리하는 프로그램이다.
쉘에 chkconfig 명령을 해보면 현재 시스템에 등록된 서비스 목록을 확인할 수 있고, 서비스 이름을 지정하면 해당 서비스에 대해서만 상태를 확인할 수도 있다.

그렇다면 서비스 등록을 하는 장점은 무엇일까?
예를 들어 서비스로 프로그램이 등록 되어있지 않다면 서버 관리자가 root 계정으로 접속을 한 후 직접 프로그램을 실행시키는 명령을 해야 한다.
하지만 서비스로 등록이 되어있다면 서버를 실행했을 때 자동으로 프로그램을 실행 시킬 수 있기에 많은 이점을 가지고 있다.
예전에는 이렇게 궁금증이 생기면 바로 공부를 하곤 하였는데, 최근에는 직장인이 되었다는 이유와 피곤하다는 말도 안되는 이유로 매번 궁금증을 애써 미뤄왔던 것 같다.
앞으로는 이러한 궁금증을 정면으로 마주해야겠다.