리눅스 서비스(데몬) 자동시작 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. 재부팅 후 스크립트 작동 확인
'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 |