CentOS7 이전 버턴에서는 자동 재실행 스크립트를 위해서 /etc/rc.d/init.d 디렉터리에 스크립트를 생성하는 방법을 사용했다. 하지만, CentOS7 부터는 systemd를 활용해서 서비스를 관리하는 방법을 주로 사용한다. 이유는 systemctl을 통해 프로세스를 관리할 수 있다는 장점과 서비스를 병렬로 처리하기 때문에 부팅 속도가 향상 되었다. systemd에 대한 개괄적인 설명은 아래와 같다.

 

 

# Systemd 개요

  -. 최상위 프로세서

  -. 유저 레벨에서 최초로 실행

  -. 실행된 이후 서비스 및 유닛드을 제어하고 관리가 가능

 

# Systemd 기능 및 특징

  -. init 프로세스에 대한 호환성 제공

  -. 시스템을 관리할 때 systemd 유닛을 사용

  -. 시스템 부팅 시 서비스를 병렬로 시작 (부팅속도 향상)

  -. 사용자의 요구에 맞게 서비스 실행

  -. 마운트 포인트와 자동 마운트 포인트 관리

 

System 유닛

  -. /etc/systemd/system: 시스템 관리자가 수동으로 생성 및 관리하는 유닛들을 저장 [부팅시 사용]

  -. /run/systemd/system: 런타임 상태일 때 임시로 유닛 파일을 저장하는 디렉터리 [재부팅시 삭제]

  -. /usr/lib/systemd/system: 특정 유닛이 포함된 패키지를 설치하면 저장되는 디렉터리

 

 

 

위의 특징을 파악하고 아래와 같이 서비스 등록을 실행하면 된다. 본인은 /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

 

 

위와 같은 명령어를 통해 생성한 오라클 서비스를 등록해준다. 명령어에 대한 간략한 설명은 아래와 같다.

 

 start

 유닛을 시작

 stop

 유닛을 정지

 reload

 유닛의 설정 파일을 다시 로드

 restart

 유닛을 재시작

 enable

 부팅 시 유닛이 시작되로록 설정

 disable

 부팅 시 유닛이 시작되지 않도록 설정

 is-active

 유닛이 동작하고 있는지 확인한다

 is-enabled

 유닛이 시작되었는지 확인

 isolate

 지정한 유닛 및 이와 관련된 유닛만 시작하고 나머지는 정지

 kill

 유닛에 시그널을 전송

 

 

  1. 너무하네 2018.07.26 21:47
    아무리 그래도 코드는 복사할수있게 하시지 이렇게 다막아놓으시고 수기로 치란건가..ㅋ
    • 예전에 한번 풀어놨었는데, 스킨이 다시 적용되었나 봅니다. 다시 우클릭 방지 옵션을 해제했으니 섭섭한 마음 풀었으면 좋겠네요. :-)

Private comment