Linux에서 백그라운드로 자동으로 실행하게끔 service를 등록할 수 있다.
현재 등록된 service 목록은 /etc/systemd/system 경로에 *.service 파일을 보면 확인 할 수 있다.
systemd는 Linux의 init system 중 하나로,
init system을 사용하는 가장 기본적인 이유는 Linux system 이 부팅 된 다음 User영역의 Component를 initialize 하기 위함이다.
또한 백그라운드에서 동작하는 daemon이나 서비스를 관리하기 위함이다.
간단하게, /etc/init.d 경로에 있는 script 등은 System V init, /etc/systemd/system 경로에 있는 *.service는 systemd 라고 생각하면 된다.
가장 간단하게 systemd를 추가하는 방법은 아래와 같은 파일을 /etc/systemd/system 경로에 추가 하면 된다.
파일 이름은 <service_name>.service
[Unit]
Description=<Description of your own service>
After=network.target
[Service]
ExecStart=<File would be executed with this service>
[Install]
WantedBy=multi-user.target
Description: 해당 service에 대한 설명으로, systemctl status로 확인 할 때 가장 첫 줄에 표현된다.
ExecStart: 실행할 파일의 절대경로
※위의 ExecStart 로 표기된 파일은 ./<file> & 와 비슷한 방식으로 구동되기 때문에, 실행되는 파일의 첫 줄에 해당 파일을 실행할 shell을 나타내는 shebang(#!)을 포함해줘야 한다.
<service_name.service 파일을 추가 한 후에는,
$ sudo systemctl daemon-reload
를 통해 새로운 모듈을 load 하고,
시작, 정지, 상태 확인은 아래와 같은 명령어로 할 수 있다.
$ sudo systemctl start <service_name>
$ sudo systemctl stop <service_name>
$ sudo systemctl restart <service_name>
$ sudo systemctl status <service_name>
부팅 시 자동으로 실행되게 하기 위해서는 아래와 같이 enable 하면 된다.
$ sudo systemctl enable <service_name>
$ sudo systemctl disable <service_name>
참조: https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units