728x90
Linux (CentOS)에서 init.d 등록하기
fluentd 를 설치했는데 실행, 재실행, 중지 명령어를 bin 폴더로 들어가서 하는게 귀찮아서 서비스 등록해서 사용하려고 한다.
centos7은 이 설정과 다르니 다른 블로그를 참조
shell script 작성
- 파일 생성
sudo vi fluentd # fluentd라는 이름의 파일 생성
- 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
- 작성한 스크립트 파일 /etc/init.d로 이동
sudo mv fluentd /etc/init.d/
- 실행 권한 부여
sudo chmod -R 755 /etc/init.d/fluentd # 이건 해줘야하는지 모르겠음
sudo chmod +x /etc/init.d/fluentd # 실행 권한
- 서비스 등록
cd /etc/init.d
sudo chkconfig --add fluentd
- 서비스 전체 리스트 확인
# 해당 서비스만 확인 sudo chkconfig --list fluentd
sudo chkconfig --list
- 실행
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 |
Comment