khann's IT와 경제 블로그

반응형

https://www.onoffmix.com/event/261724

 

리눅스에서 자동실행을 위해 Service를 등록해보겠다.

 

WHY?

먼저 리눅스 서버나 클라이언트의 머신에서 부팅시 자동으로 실행되게 하고싶은 application이 있거나,

server application의 stop, restart등을 쉽게 관리하고싶을때 필요하다.

 

 

작업환경

OS : 라즈비안 ( 커널 버전 : 4.19) , (Ubuntu 16.04, Ubuntu 18.04 버전도 과정이 동일하다)

Target App: Jupyter-Notebook

 

 

 

전체과정

1. Service파일 만들기

2. Service등록

 

 

 

1. Service 파일 만들기

 

  1) root 권한으로 /etc/systemd/system/ 위치에 원하는 service file을 만든다.

ex) (service의 이름이 jupyterNotebook라면 service file이름은 jupyterNotebook.service으로 한다.)

1
sudo vim /etc/systemd/system/jupyterNotebook.service
cs

 

 

  2) 아래와 같이 입력한다

1
2
3
4
5
6
7
8
9
[Unit]
Description=Jupyter Notebook Server
 
[Service]
ExecStart=/usr/local/bin/jupyter-notebook
WorkingDirectory=/your/working/dir
 
[Install]
WantedBy=multi-user.target
cs

 

WantedBy

: systemctl enable 명령어로 유닛을 등록할때 등록에 필요한 유닛을 지정한다. (종속성 검사 단계)

 

ExecStart : 실행할 Application이 위치한 전체 경로 


WorkingDirectory : 프로세스의 작업 디렉토리. 서비스로 등록한 어플리케이션을 이 디렉토리에서 실행시킨다.


Description

: 유닛에 대한 상세한 설명

 

우리는 빨간색 변수만 알맞게 수정해주면 된다.

 

 

 

 

 

 

 

 

2. Service등록

 설정한 서비스를 아래처럼 실행한다.

1
2
3
sudo systemctl daemon-reload
sudo systemctl enable jupyterNotebook
sudo systemctl start jupyterNotebook
cs

 

  서비스가 제대로 실행이 되었는지 상태를 확인하기 위해선 아래처럼 실행한다.

1
sudo systemctl status jupyterNotebook
cs

 

jupyterNotebook이  Service로 실행된 모습

 

그리고 제대로 실행이 됐는지 접속해보거나 netstat명령어 등으로 포트를 확인해보면 된다.

 

 

 추가로 재실행하고싶다면 아래처럼 실행하면 된다. 

1
sudo systemctl restart jupyterNotebook
cs

 

 

 

추가---

Trouble Shoot

 

아래의 오류 또는 메시지 가 나오는 경우

 

Active: failed (Result: exit-code)

또는

-bash: syntax error near unexpected token `newline' 

또는

Running as root is not recommended. Use --allow-root to bypass. 

 

 

2가지 해결방법이 존재.

 

1. 루트에서 계속 실행하는 방법

systemctl은 root에서 실행되므로

anaconda의 가상환경에 설치된 jupyter등 non-root에서 실행되는 경우 jupyterNotebook.service파일에서 ExecStart의뒤에 --allow-root --config="/home/username/

.jupyter/jupyter_notebook_config.py"를 추가해야한다.

 

 

ExecStart=/usr/local/bin/jupyter-notebook --allow-root --config="/home/username/

.jupyter/jupyter_notebook_config.py"

 

 

 

 

2. non-root로 자기 계정에서 실행하는방법

jupyterNotebook.service파일에서 User=자기유저이름 을 추가한다.

반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver