linux에서 특정 서비스를 systemctl 명령어를 통해서 관리하고 싶을 때가 있다.
그 때는 어떻게 해야할까?
cd /etc/systemd/system
touch service-name.service
/etc/sytemd/sytem
디렉토리내에 추가하고 싶은 service의 이름으로 service-name.service
파일을 만들면 된다.
[Unit]
Description=서비스 설명
[Service]
Type=서비스 타입 ( simple, forking, oneshot, notify, dbus 등.. )
ExecStart=/path/to/start/script
Restart=on-failure ( 재시작 여부를 설정 )
[Install]
WantedBy=multi-user.target ( 유닛을 등록하기 위한 종속성 검사 )
service-name.service
파일은 위와 같은 데이터를 채우면 된다.
다른 여러가지 옵션은 인터넷에 검색하면 자세히 나오니 그것을 참고하길 바람.
systemctl start service-name
systemctl status service-name
systemctl stop service-name
systemctl enable service-name
journalctl -u service-name
해당 서비스를 시작하기 위한 쉘 스크립트에 #!/bin/bash
를 추가
때때로 A 서비스가 실행되기전, B 서비스가 실행되어야하는 경우가 있다. ( 반대로 B 서비스가 종료되기전, A 서비스가 종료되어야하는 경우 )
이럴 때는, 서비스를 정의한 service-name.service
파일에 아래와 같은 내용을 채워주면 된다.
### service-a.service
[Unit]
Description=서비스 설명
BindsTo=service-b.service
After=service-b.service
[Service]
Type=서비스 타입 ( simple, forking, oneshot, notify, dbus 등.. )
ExecStart=/path/to/start/script
Restart=on-failure ( 재시작 여부를 설정 )
[Install]
WantedBy=multi-user.target ( 유닛을 등록하기 위한 종속성 검사 )