
머리말
리눅스 운영체제 CentOS7 이전 버전에서는 자동 재실행 스크립트를 위해서 /etc/rc.d/init.d 디렉터리에 스크립트를 생성하는 방법을 사용했다. 하지만 CentOS7부터는 systemd 데몬을 활용해서 서비스를 관리하는 방법이 공식적으로 가이드되고 있다. 자동 시작 서비스를 보다 쉽게 관리할 수 있는 장점과 병렬로 처리되기 때문에 부팅 속도가 향상되기 때문이다. 본 포스팅에서는 systemd 데몬을 활용해 서비스를 자동으로 시작할 수 있도록 설정하는 방법에 대해서 소개한다.
systemd 기능 및 특징
서비스를 관리하는 systemd 데몬은 다른 프로세스보다 우선되는 최상위 프로세스이며 사용자 계정에서 최초로 실행되는 서비스다. systemd 서비스가 실행된 이후에 다른 서비스의 유닛들을 제어하고 관리가 가능하다. systemd 서비스의 특징은 아래와 같다.
init 프로세스에 대한 호환성 제공
시스템을 관리할 때 systemd 유닛을 사용
시스템 부팅 시 서비스를 병렬로 시작하기 때문에 성능 향상
사용자의 요구에 맞는 서비스 실행 관리
마운트 포인트와 자동 마운트 포인트 관리
systemd 서비스에서 유닛들을 관리하는 영역은 총 3개로 구분된다. 쉽게 설명하면 수동, 임시 그리고 자동 설정 영역으로 구분된다. 각 영역에 대한 설명은 아래와 같다.
/etc/systemd/system: 시스템 관리자가 수동으로 생성 및 관리하는 유닛들을 저장 [부팅 시 사용]
/run/systemd/system: 런타임 상태일 때 임시로 유닛 파일을 저장하는 디렉터리 [재부팅 시 삭제]
/usr/lib/systemd/system: 특정 유닛이 포함된 패키지를 설치하면 저장되는 디렉터리
오라클 서비스 자동시작 설정
systemd 서비스의 특징과 유닛 생성 영역을 숙지했다면 아래와 같이 서비스를 등록하면 된다. 본인의 경우 /usr/lib/systemd/system 디렉터리에 서비스를 등록했다.
#오라클 리스너 등록
vi /usr/lib/systemd/system/oracle_listener.service
[Unit]
Description=oracle listener
After=network.target
[Service]
Type=forking
Environment=ORACLE_BASE=/app/oracle
Environment=ORACLE_HOME=/app/oracle/11gR2
Environment=ORACLE_SID=wookoa
ExecStart=/app/oracle/11gR2/bin/lsnrctl start
ExecStop=/app/oracle/11gR2/bin/lsnrctl stop
User=oracle
[Install]
WantedBy=multi-user.target
#오라클 인스턴스 등록
vi /usr/lib/systemd/system/oracle_instance.service
[Unit]
Description=oracle instance
After=network.target syslog.target
[Service]
Type=forking
User=oracle
Group=database
Environment=ORACLE_BASE=/app/oracle
Environment=ORACLE_HOME=/app/oracle/11gR2
Environment=ORACLE_SID=wookoa
ExecStart=/app/oracle/11gR2/bin/dbstart
ExecStop=/app/oracle/11gR2/bin/dbshut
[Install]
WantedBy=multi-user.target
#systemd에 등록
systemctl daemon-reload
systemctl start oracle_listener.service
systemctl enable oracle_listener.service
systemctl start oracle_instance.service
systemctl enable oracle_instance.service
systemd 모듈은 위에서 설정한 파일을 읽고 서비스를 시작, 재시작, 상태 출력 등 서비스를 관리하기 위한 기능을 제공한다. 따라서 정해진 규칙으로 파일을 생성해야 되며, systemd 데몬을 재시작함으로써 서비스를 관리할 수 있다. 아래의 표는 systemd 데몬을 활용한 명령어를 정리했으니 참고 바란다.
명령 종류 | 상세 설명 |
start | 특정 유닛을 시작 |
stop | 특정 유닛을 정지 |
reload | 유닛의 설정 파일을 다시 로드 |
restart | 특정 유닛을 재시작 |
enable | 시스템 부팅 시 특정 유닛이 자동 실행 활성화 |
disable | 시스템 부팅 시 특정 유닛이 자동 실행 비 활성화 |
is-active | 특정 유닛의 시작 여부를 체크 |
is-enabled | 특정 유닛의 자동 실행 여부를 체크 |
isolate | 특정 유닛 및 관련된 유닛만 실행하고 그 외 유닛은 정지 |
kill | 특정 유닛에 종료 신호를 전송 |
꼬리말
리눅스 시스템은 운영체제마다 서비스를 자동으로 시작하는 설정이 조금씩 다르다. 물론 발전하는 방향으로 변경되지만 버전 별 차이를 잘 숙지하고 있어야 시간을 낭비하는 경우가 줄어든다. CentOS7 버전에서 서비스를 자동으로 시작할 수 있도록 설정하는 방법을 소개한 본 포스팅은 이로써 마무리르 짓도록 한다.
소중한 댓글 (0)