출처
설명
리눅스 시스템이 실행 되고 가장먼저 실행되어 다른 프로세스를 실행하는 역할을 하는 것이 systemd(system daemon)입니다.
이 프로세스로 프로그램을 서비스로 등록할 때 사용할 수 있는 명령어가 systemctl
입니다.
사용예제
서비스 파일
시스템에 서비스로 등록하기 위해서는 서비스 파일을 생성해야 합니다. 주키퍼 프로세스를 시스템 서비스로 등록하기 위해서는 다음과 같은 파일을 생성하고 /etc/systemd/system/zookeeper.service에 저장합니다.
[Unit]
Description=Zookeeper
[Service]
Type=forking
User=foo
ExecStart=/opt/zookeeper/bin/zkServer.sh start
[Install]
WantedBy=multi-user.target
서비스 파일에 환경변수 추가
Environment=ZOKEEPER_CONF=/etc/zookeeper/conf
ExecStart=/opt/zookeeper/bin/zkServer.sh --conf ${ZOKEEPER_CONF} start
서비스 등록
서비스 파일을 생성후 다음 명령을 실행하면 서비스로 등록됩니다.
# 주키퍼 서비스를 등록
systemctl daemon-reload
# 시스템이 시작될 때 자동으로 시작되도록 등록
systemctl enable zookeeper
서비스 실행
등록된 서비스를 실행, 정지하는 명령은 다음과 같습니다.
# 실행
systemctl start zookeeper
# 정지
systemctl stop zookeeper
# 상태 확인
systemctl status zookeeper
# active 상태 확인
systemctl is-active zookeeper
서비스 삭제
서비스 삭제는 서비스 파일을 삭제하고 리로드하면 됩니다.
# 서비스 자동 실행을 제거
systemctl disable zookeeper
# 서비스 등록 파일 삭제
sudo rm /etc/systemd/system/zookeeper.service
# 서비스 제거
systemctl daemon-reload
systemctl reset-failed
서비스 목록 확인
# 등록한 서비스 목록을 확인
systemctl list-units --type service --all
# 상태가 not-found 인 서비스 목록 확인
systemctl --state=not-found --all
서비스 옵션
Service Type 옵션
simple
- A long-running process that does not background its self and stays attached to the shell.forking
- A typical daemon that forks itself detaching it from the process that ran it, effectively backgrounding itself. 자식 프로세스까지 부모가 관리 함.oneshot
- A short-lived process that is expected to exit.dbus
- Like simple, but notification of processes startup finishing is sent over dbus.notify
- Like simple, but notification of processes startup finishing is sent over inotify.idle
- Like simple, but the binary is started after the job has been dispatched.
서비스 로그
서비스로 실행한 프로그램의 로그를 확인하기 위해서는 jourctl 명령을 이용할 수 있습니다.
# -u 옵션으로 서비스 지정
$ journalctl -u zookeeper
# 추가 되는 로그를 확인. -f 옵션 이용
$ journalctl -u zookeeper -f