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



'Programming > Linux' 카테고리의 다른 글

Ctags  (0) 2018.07.03
scp  (0) 2018.05.29
Linux tar, gz, bz2  (0) 2018.04.25
Linux HDD mount  (0) 2018.04.06
HandBrakeCLI  (0) 2018.04.06

+ Recent posts