Linux (CentOS 6) 서비스 등록
728x90

Linux (CentOS)에서 init.d 등록하기

fluentd 를 설치했는데 실행, 재실행, 중지 명령어를 bin 폴더로 들어가서 하는게 귀찮아서 서비스 등록해서 사용하려고 한다.

centos7은 이 설정과 다르니 다른 블로그를 참조

shell script 작성

  1. 파일 생성
  2. sudo vi fluentd # fluentd라는 이름의 파일 생성
  3. script 작성
#!/bin/sh   

# chkconfig: 2345 90 90 
# description: init file for fluentd
# processname: fluentd

RETVAL=0 
PNAME=fluentd 
PID=`ps -ef| grep "^.*\$HOME/.rbenv/versions/2.6.10/bin/fluentd --user root --group root --daemon /var/run/fluentd.pid$" | grep -v 'grep' | awk '{print $2}'` 
case "$1" in 
        start)
                $HOME/.rbenv/versions/2.6.10/bin/fluentd --user root --group root --daemon /var/run/fluentd.pid
                RETVAL=$?
                echo $RETVAL
      ;;

        stop)
                if [ $PID -gt 0 ];then
                        $HOME/.rbenv/versions/2.6.10/bin/fluent-ctl shutdown $PID
                        RETVAL=$?
                elif [ -z $PID ];then
                        echo fluentd is not running
                fi
      ;;
        restart)
                if [ $PID -gt 0 ];then
                        $HOME/.rbenv/versions/2.6.10/bin/fluent-ctl restart $PID
                        RETVAL=$?
                elif [ -z $PID ];then
                        echo fluentd is not running
                fi
      ;;
        *)
                echo "Usage: fluentd {start|stop|restart}"
                exit 1
      ;;
    esac
        echo $RETVAL
    exit $RETVAL

설명

!/bin/sh 스크립트 작성 시 맨 상단에 작성해야함.
# chkconfig: 345 90 90 
# description: init file for fluentd
# processname: fluentd

chkconfig: <run level> <> <>
description : 설명
processname: 프로세스 이름

run level 345 인 경우 서버의 부팅 및 shutdown 시에 자동으로 실행된다.

CentOS run level 표

level 상세 정보
0 종료
1 단일 사용자 모드
2 사용하지 않음
3 다중 사용자 모드(CUI)- 터미널
4 사용하지 않음
5 다중 사용자 모드 (GUI)- x윈도우
6 재부팅

이제 스크립트

RETVAL=0  # command 실행 결과를 넣어주는 변수로 설정 0 성공 다른 숫자 실패
PNAME=fluentd # 프로세스 이름
PID=`ps -ef| grep "^.*\$HOME/.rbenv/versions/2.6.10/bin/fluentd --user root --group root --daemon /var/run/fluentd.pid$" | grep -v 'grep' | awk '{print $2}'`  # 프로세스 번호
case "$1" in  # $1 위치 파라미터 ex) service fluentd start -> start가 파라미터로 들어온다.
        start)
                $HOME/.rbenv/versions/2.6.10/bin/fluentd --user root --group root --daemon /var/run/fluentd.pid  # fluentd 를 데몬으로 돌리기 위해서 설정  --daemon PIDFILE => pid가 있는 파일을 /var/run/fluentd.pid 라는 이름으로 저장
                RETVAL=$? $?는 마지막으로 실행한 커맨드의 성공 실패 유무 0 : 성공 이외의 숫자 : 실패
      ;;
        stop)
                if [ $PID -gt 0 ];then # pid 가 0보다 크면 프로세스 돌아간다고 생각하고 if 문 작성

                        $HOME/.rbenv/versions/2.6.10/bin/fluent-ctl shutdown $PID
                        RETVAL=$?

                elif [ -z $PID ];then # pid 가 null일 때
                        echo fluentd is not running
                fi
      ;;
        restart)
                if [ $PID -gt 0 ];then
                        $HOME/.rbenv/versions/2.6.10/bin/fluent-ctl restart $PID
                        RETVAL=$?
                elif [ -z $PID ];then
                        echo fluentd is not running
                fi
      ;;
        *)
                echo "Usage: fluentd {start|stop|restart}" # 그 이외의 case에 맞는 명령어를 사용하지 않았을 때
                exit 1 # command 성공 유무 1로
      ;;
    esac
        echo $RETVAL
    exit $RETVAL
  1. 작성한 스크립트 파일 /etc/init.d로 이동
  2. sudo mv fluentd /etc/init.d/
  3. 실행 권한 부여
sudo chmod -R 755 /etc/init.d/fluentd # 이건 해줘야하는지 모르겠음
sudo chmod +x /etc/init.d/fluentd # 실행 권한
  1. 서비스 등록
cd /etc/init.d
sudo chkconfig --add fluentd
  1. 서비스 전체 리스트 확인
    # 해당 서비스만 확인
    sudo chkconfig --list fluentd
  2. sudo chkconfig --list
  3. 실행
  4. sudo service fluentd
728x90

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

Linux Signal  (0) 2022.08.10
리눅스 명령어 정리 중..  (0) 2022.07.25
로그파일 시간 별로 추출하기  (0) 2022.06.24
Linux 버전 확인하는 법  (0) 2022.04.27
Linux(CentOS 8) 계정 생성 및 권한 주기  (0) 2022.04.27