systemctl로 nginx service 등록해보자.
sudo vi /etc/systemd/system/nginx.service
service 설정 파일등록
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target

ExecStartPre : /usr/sbin/nginx -t, validation 해서 테스트 먼저 하기ExecStart : /usr/sbin/nginx, 시작ExecReload : /usr/sbin/nginx -s reload, 리로드 시켜줘systemctl 은 다음 지정된 명령에 대한 동작만 정의할 수 있다.
{start|stop|restart|reload|force-reload|status|configtest|rotate|upgrade}
설정 변경 적용
sudo systemctl daemon-reload

시작
sudo systemctl status nginx
아무 로그가 안 나올 것. Status 볼 수 있는 명령어로 확인해보자.
sudo systemctl status nginx

active (running) 이라고 되어 있고
603 "nginx: master process , 608 "nginx: worker process" 실행됐다고 알려준다.
ps로 확인해보자.
ps -ef --forest | grep nginx

위에 정보와 똑같이 실행되고 있는 걸 확인할 수 있따.

sudo nginx -s stop nginx 명령어로 정지를 시켜보자.

이렇게 종료된 것을 확인할 수 있다.
이제 System.ctl.start.nginx 로 등록하면 service 명령어로 사용할 수 있다고 했다. service 명령어를 사용하면 기존 명령어와 순서가 달라진다.
sudo service nginx start
sudo service nginx status

종료 (status로 확인)
sudo service nginx stop
sudo service nginx status

아까와 로그가 다른 건 service의 stop으로 정지를 해서 정상종료된 것 전부가 나와있다. Deactivated successfully. 이런 식으로.
지금 까지 나온 것들만 보면 기본 명령어를 쓴 것과 크게 다르지가 않다.
하지만 systemctl을 사용하면 죽지 않는 프로세스를 만들 수 있다.
sudo vi /etc/systemd/system/nginx.service

[Unit] 에 다음 설정을 추가한다.
StartLimitIntervalSec=500
StartLimitBurst=5
[Service] 에 다음 설정을 추가한다.
Restart=on-failure
RestartSec=5s
변경사항을 적용한다.
sudo systemctl daemon-reload

다시 nginx 를 작동시켜서 active 상태로 만들어놓고
sudo service nginx start
sudo service nginx status

nginx가 다시 살아나는지 확인하기 위해서
마스터 프로세스를 kill -9으로 종료하고 status를 확인해보자.
sudo kill -9 pid
sudo service nginx status

Active: activating (auto-restart) (Result: signal) since ~
이렇게 나온다.
Main PID: 1457 (code=killed, signal=KILL) : killed됐다는 main pid에 대한 정보가 나온다.
몇초 뒤 상태를 다시 확인해보면

active 상태로 바뀐 것을 확인할 수 있다.
이렇게 죽은 것을 자동으로 detecting 해주고 5초 뒤 다시 시작해주는 것을 확인할 수 있다.
그러면 nginx 명령어로 종료시키면 어떻게 될까?
sudo nginx -s stop

nginx.service: Failed with result 'exit-code'라고 나온다.
나는 nginx라고 썼는데도 다시 뜨는 이유는
결국에는 systemctl 로 systemd service를 등록하면 systemd serivce 명령어로 상태를 변경해야된다. 그러니까 정말 내가 종료하고싶고 재시작 하지 않아도 되는 경우는 serivce명령어로 아니면 systemctl 명령어로 stop을 날려줘야 무한 재시도를 하지 않는다.
sudo service nginx stop
sudo service nginx status

nginx.service: Deactivated successfully.

이렇게 하니까 실제로 nginx 프로세스가 종료된 것을 확인할 수 있다.