c9u11

Linux Service 등록

Linux에서 프로세스 관리하는 방법은?

나는 서버 관리자와 같이 일을 해본 적이 없다. 주로 내가 서버에 직접 들어가 필요한 패키지를 설치하거나 개발한 프로그램을 돌리는 일을 한다. 작은 회사에 있다보니 전문적으로 관리하는 사람이 없고 개발자가 서버에 직접 접속하여 관리하게 되는데 이 때 프로세스를 관리하는 방법이 크게 2가지로 나뉘었다.

  1. nohup + &
  2. service

nohup + &

주로 신입분들이 linux 서버에서 프로세스를 관리할 때 이렇게 작업한다.

nohub java -jar server.jar &

각 명령어가 무슨 뜻인지 하나하나 살펴보자.

nohup

nohup은 no hang up의 약자이다.

어려운 뜻은 아니다. 단순히 끊지마 라는 뜻이다. 정확하게 의미를 파악한다면 “내가 서버와 연결을 종료하거나 끊겨도 지금 실행한 명령어를 중단하지마” 로 볼 수 있다.

&

&는 프로그램을 백그라운드로 동작시키기 위한 명령어이다.

명령어의 제일 뒤에 작성하고 &만 사용한다면 서버와 연결이 끊겼을 때 해당 프로그램도 종료된다.


Service

나도 처음엔 nohub+&의 조합을 사용했지만 nginx를 사용하며 systemctl 명령어에 익숙해지고 내가 만든 프로그램도 이 와 같은 형식으로 관리 할 수 없을까 라는 생각에 찾아보고 알게되었다. 알고나서 사내 직원들에게 공유 했고 지금은 nohup+&의 조합을 사용하는 사람이 드물다.

주로 사용하는 방법은 아래와 같다.

systemctl [command] [name]

Service 등록

linux에서는 service 확장자의 파일로 service 설정을 관리하고있다.

  • /etc/systemd/system
  • /usr/lib/systemd/system

나는 첫번째 경로에 대해서만 알고있었다. 그런데 어느 날 한 직원이 /usr/lib/systemd/system 에 service 파일을 작성하여 사용하고있어 찾아보게되었다.

/etc/systemd/system서버 관리자의 입장에서 service를 관리하는 폴더이다. /usr/lib/systemd/systemOS 제공 업체에서 관리하는 폴더이다.

linux service 등록이라고 검색을 했을 때 대부분의 블로그에서는 etc 폴더를 설명하지만 일부 블로그에서는 usr/lib 폴더에 작성을 하거나 추가로 심볼릭 링크를 걸어야한다고 설명한다. 각 폴더가 정확하게 어떤 차이가 있는지 알아보고 작성해야 할 것 같다. 이런 상황이 나오지 않도록 나도 주의해서 공부를 하고 블로그를 작성해야겠다.

추가로 설정을 적용하려면 아래 명령어를 사용해야한다.

systemctl daemon-reload

명령어 모음

명령어에 대해서는 자세하게 설명하지 않아도 될 것 같아 간단히 작성해두었다.

서비스 상태 확인

systemctl status [Name]

서비스 시작

systemctl start [Name]

서비스 종료

systemctl stop [Name]

서비스 재시작

systemctl restart [Name]

개인적인 의견

2가지를 모두 사용해봤을 때 service를 등록하는 편이 더 좋았다.

  • 정해진 위치에 서비스에 대한 파일이 모여있으니 해당 폴더만 확인하면 이 전 작업자가 어떻게 작업을 했는지, 어떤 프로세스를 실행하고 있는지 금방 알 수 있다.
  • 간단한 명령어로 어느 위치에 있든 프로세스를 제어할 수 있다.
  • 상태 확인이 간편하고 log가 자동으로 관리되어 편하다.
  • 비정상적인 이유로 프로세스가 죽거나 부팅 시 자동실행 등의 기능을 제공한다.

service 등록 시 옵션에 대해 자세하게 살펴보지는 못했지만 그동안 사용해보면서 느낀 장점들은 위와 같다. 뭐든지 사용 전 다른 방법은 없는 지 알아보고 선택한다면 이유에 대해서도 고민을 해보는 것이 좋겠다.


참고

https://unix.stackexchange.com/questions/206315/whats-the-difference-between-usr-lib-systemd-system-and-etc-systemd-system

https://sowells.tistory.com/160