OS 기술/Linux

리눅스 재부팅시 서비스 자동시작

DongT 2023. 7. 4. 16:15
728x90
반응형

리눅스 서비스(데몬) 자동시작 3가지방법

 1) rc.local 얹기

  -- 데몬 하나정도는 괜찮은데 2개부터는 관리가 안됨

 2) systemctl 새로 등록 (systemd)

  -- 해당 데몬을 위한 서비스를 새로 만들어서 관리

  -- CentOS7이상, Ubuntu에서 사용

 3) chkconfig 등록

  -- CentOS6이하에서도 가능

 

하위에서는 2,3번에 대해서만 기술

 


 

CentOS7이상/Ubuntu 데몬 자동시작 설정

  • 목적 : 서버 재부팅시 서비스 데몬 자동 시작
  • 테스트 OS : CentOS7.6
  • 서비스관리 명령어 : systemctl
  • 특이사항 : 아래는 가장 간단한 방법으로만 기술. 필요에 따라 추가 옵션 지정 가능.

 

1. 실제로 작동하는지 테스트 스크립트 작성 실행권한 부여

실행시 현재시간을 기록하는 스크립트 작성

vi startpro_test.sh

#!/bin/bash

date >> /root/startpro_test/date_log.txt

exit 0

스크립트 실행권한 부여 (rw-r--r--   -->  rwxr-xr--)

chmod 754 startpro_test.sh
 또는
chmod +x startpro_test.sh

 

2. 실행 되는지 검증

./startpro_test.sh
 또는
sh startpro_test.sh

 

3. systemd 등록하여 systemctl에서 관리가 가능하도록 설정

서비스 이름은 임의로 testchk 지정

경로 : /etc/systemd/system/[서비스이름].service

아래는 최소한의 설정만 지정

 (옵션 설명 URL : https://atl.kr/dokuwiki/doku.php/systemd_unit_%EC%98%B5%EC%85%98)

[Unit]
Description :
서비스에 대한 설명

[Service]
Type :
서비스 타입 지정 (simple: default이며, 특이 조건 없음)
ExecStart :
구동 명령어(스크립트) 선언
Restart :
서비스가 재시작하는 기준 (on-failure: 서비스가 비정상 종료되었을때 재시작함)
User : 유닛의 프로세스를 수행할 사용자명 지정한다 (Group= 옵션도 마찬가지)


[Install]
WantedBy :
조건을 만족하는지, 종속성 여부 (multi-user: 런레벨 3으로 일반적인 OS부팅상태이면, 서비스 시작)

run level 관련 URL : https://www.lesstif.com/system-admin/linux-systemd-systemctl-run-level-target-98926803.html
 

 

4. 서비스 등록 여부 확인 자동시작 설정

systemctl status testchk
 (설명 : 등록한 서비스가 보이는지 확인)
systemctl enable testchk
 (설명 : 등록한 서비스의 자동시작 설정)

 

5. 서비스 자동시작 되는지 확인하기 위해 OS재부팅

테스트 환경이기 때문에 재부팅으로 확인. 운영중인 서버에서는 재부팅 금지

reboot

 

6. 재부팅 스크립트 작동 확인


(참고)

웹서비스의 경우 apache 자동 시작 설정 관련 예시

 

1. 서비스 시스템 파일 확인

/etc/systemd/system/apache.service
 또는
/etc/systemd/system/httpd.service
기타 등등

 

2. 시스템 파일 최소 옵션

[Unit]
Description=서비스설명입력

[Service]
Type=forking
ExecStart=/usr/sbin/httpd -k start
  또는 
ExecStart=/usr/sbin/apachectl start 


[Install]
WantedBy=multi-user.target

 

 

 

 

 


 

CentOS6이하 데몬 자동시작 설정

  • 목적 : 서버 재부팅시 서비스 데몬 자동 시작
  • 서비스관리 명령어 : chkconfig
  • 테스트 OS : CentOS6.5

 

 

1. 실제로 작동하는지 테스트 스크립트 작성 실행권한 부여

   (위의 CentOS7처럼 실행시 현재시간 기록하는 스크립트는 미리 생성해둠)

  서비스 등록을 위해 스크립트에 내용 추가

 # chkconfig: 345 90 90  
 (설명 : 3,4,5
런레벨에서 실행, 시작 우선순위 90, 종료 우선순위 90)

 (설명 : 일반적인
서비스라면 우선순위가 낮아도 상관없음. 숫자가 높을수록 우선순위 낮음)

 # description: StartDaemon Test Link
 (설명 : 서비스에 대한 설명)

 # processname: testchk
 (설명 : 프로세스로 확인되는 서비스 이름 지정.)

스크립트 실행권한 부여 (rw-r--r--   -->  rwxr-xr--)

chmod 754 startpro_test.sh
 또는
chmod +x startpro_test.sh

 

2. 실행 되는지 검증

./startpro_test.sh
  또는
sh startpro_test.sh

 

3. 생성한 스크립트를 init.d 등록

파일 자체를 복사해서 옮길 있지만, 추후 스크립트 내용이 변경될 때를 대비하여 심볼릭링크(바로가기) 연결함

심볼릭링크 이름은 chkconfig 핸들링하기 편하게 지정

ln -s ./startpro_test.sh /etc/init.d/testchk
(설명 : ln -s
원본파일 심볼릭링크파일)

 

4. 서비스 자동시작 설정

chkconfig 서비스 등록 확인

chkconfig --add testchk
 (설명 : 서비스 등록)
chkconfig --list testchk
 (설명 : 서비스가 잘 등록됬는지 확인)

서비스 확인시 스크립트에 지정한 런레벨 3,4,5에서만 on 되있는것 확인

 

 

5. 서비스 자동시작 되는지 확인하기 위해 OS재부팅

테스트 환경이기 때문에 재부팅으로 확인. 운영중인 서버에서는 재부팅 금지

reboot

 

 

6. 재부팅 스크립트 작동 확인

 

 

728x90

'OS 기술 > Linux' 카테고리의 다른 글

리눅스 시간 관련 명령어 date  (0) 2023.07.04
리눅스 타임존 변경하기  (0) 2023.07.04
VirtualBox에서 Ubuntu 설치 후 터미널 안열림  (0) 2023.07.03
Ubuntu 해상도 변경  (0) 2023.07.03
Ubuntu SSH 서버 설치  (0) 2023.07.03