CentOS6 이전 버전의 리눅스는 /etc/rc.d/init.d/ 디렉토리에 서비스 관리 스크립트가 있었습니다.
CentOS7 부터는 서비스 관리를 systemd에서 하게 되며 systemctl 명령어를 통해 각 서비스들을 제어하게 됩니다.
명령 | service | systemctl | 비고 |
시작 | service 서비스명 start | systemctl start 서비스명.service | systemctl의 경우 .service 생략 가능 |
종료 | service 서비스명 stop | systemctl stop 서비스명.service | |
재시작 | service 서비스명 restart | systemctl restart 서비스명.service | |
설정 값 다시 읽기 | service 서비스명 reload | systemctl reload 서비스명.service | |
서비스 상태 확인 | service 서비스명 status | systemctl status 서비스명.service | |
모든 서비스 상태 확인 | service --status-all | systemctl list-units --type service --all | |
자동시작 활성화 | chkconfig 서비스명 on | systemctl enable 서비스명.service | |
자동시작 비활성화 | chkconfig 서비스명 off | systemctl disable 서비스명.service |
Service, Systemctl을 이해하기 위해서, 데몬이라는 개념을 알고 있어야 합니다. 데몬(Daemon)이란 사용자가 직접 제어하지 않고 백그라운드에서 여러 작업을 하는 프로그램을 말합니다. 데몬 프로세스로는 systemd, syslogd, crond처럼 프로세스 이름 마지막에 d가 붙습니다.
Linux는 OS 가 부팅되면서 여러가지 데몬들이 실행됩니다. 네트워크를 관리하는 데몬, 하드웨어 동작을 처리하는 데몬 등 시스템에 필요한 작업을 처리하는 데몬들이 있습니다. 이러한 데몬들을 Linux에서는 service 파일로 설정하여 실행하고 있으며, systemd라는 프로세스가 관리하고 있습니다.
systemd는 1번 PID를 갖는 프로세스이며 가장 상위의 프로세스로 모든 프로세스의 부모 역할을 합니다.
CentOS6 이전 버전에는 init 프로세스가 부모 역할을 하다가 CentOS7부터 systemd 프로세스가 생겼습니다.
서비스 등록 하는 방법은 아래와 같습니다.
CentOS7 이상 - systemd 에 등록 (crond.service 기준)
- # vi /etc/systemd/system/crond.service
- # systemctl reload crond.service 또는 systemctl daemon-reload
systemd에 등록하는 service파일에는 Unit, Service, Install 섹션으로 나누어져 있습니다.
[Unit]
Description : 해당 유닛에 대한 상세한 설명을 작성합니다.
After : 이 옵션에 나열된 유닛이 시작하고 나서 실행합니다.
[Service]
EnvironmentFile : 해당 유닛에서 사용할 환경 변수 파일을 선언합니다.
ExecStart : 구동 명령어를 선언합니다. 실행 명령어는 반드시 절대 경로 또는 변수(${STRINGS}) 로 시작해야 합니다.
ExecReload : 리로드(reload)를 수행할 명령어를 선언합니다.
KillMode : 중지 방법에 대해서 설정하는 옵션입니다.
- control-group (default) : 해당 유닛의 그룹까지 모두 중지시킵니다.
- process : 해당 유닛만 중지시킵니다.
- none : 아무 액션을 취하지 않습니다.
Restart : 재시작 방법에 대해서 설정하는 옵션입니다.
- no (default) : 유닛을 재시작하지 않습니다.
- on-success : 유닛이 정상적으로 종료되었을 때 재시작합니다.
- on-failure : 유닛이 비정상적으로 종료되었을 때 재시작합니다.
- on-watchdog : "WatchdosSec="에 설정된 시간 내 응답이 없는 경우에 재시작합니다.
- on-abort : 지정되지 않은 리턴값을 받은 경우 재시작합니다.
- always : 어떤 상황이 와도 재시작합니다. // 사용자가 중지해도 재시작 시킴
RestartSec : 재시작 명령을 수행할 때 중지 이후 시작 전 대기시간을 설정하는 옵션입니다. (default 100ms)
[Install]
WantedBy : systemctl enable 명령어로 유닛을 등록할 때 필요한 유닛을 지정합니다.
CentOS6 이하 - service 에 등록 (tomcat.service 기준)
- # vi /etc/init.d/tomcat.serivce 또는 vi /etc/rc.d/init.d/tomcat.service
- # chkconfig --add tomcat
- # chkconfig tomcat on // 런레벨 2345 on
- # chkconfig --level 35 tomcat on // 런레벨 35에서만 자동시작 설정
- # chmod 755 tomcat // 데몬이 서비스 명령어 사용하기 위해 실행권한 추가
스크립트 내 chkconfig 의 숫자의 의미는 첫 번째 숫자 2345는 add 명령어 사용 시 on 될 런 레벨을 설정하고 두 번째 숫자 85는 서비스 시작 우선순위, 세 번째 숫자 15는 서비스 종료 우선순위를 나타낸다.
스크립트 내 chkconfig 값이 없으면 등록이 되지 않는다.
런 레벨이 궁금하다면 ? 2023.01.31 - [OS/Linux] - Linux - 런 레벨(Run level)
'OS > Linux' 카테고리의 다른 글
Linux - shell(쉘,셸) 이란 무엇일까? (0) | 2023.02.08 |
---|---|
Linux - 사용자 계정 관리 명령어 (0) | 2023.02.08 |
Linux - 메모리 정보 확인 명령어(free) (0) | 2023.02.06 |
Linux - RPM (0) | 2023.02.03 |
Linux - 찾기 명령어 (find) (2) | 2023.02.02 |