본문 바로가기
Linux/Ubuntu

Ubuntu 부팅시 자동실행 by rc.local

by ahsung 2020. 1. 17.

 

 

$ sudo vi /etc/rc.local

 

rc.local 파일에

 

실행하고 싶은 명령어를 넣습니다.

 

저는 스크립트를 실행하기위해서 코드를 짰습니다.

 

 

1줄의 #!/bin/sh는 sh 형식으로 스크립트(.sh)를 실행하겠다는 뜻입니다. (bash는 #!/bin/bash)

 

3줄에는 auto_jupyter.sh 라는 스크립트 파일을 실행시켰습니다.

 

sudo chmod 755 /etc/rc.local

반드시 실행권한을 줍니다. 755는 equal effective User에게는 모든권한, 같은 그룹과 others에게는 읽기와 실행권한입니다.

자동실행시 권한이 없어 실패 할 수 있기 때문에 꼭 넣어 줍니다.

 

(아마 실행(exec)권한이 없어서 안되는 거기 때문에 chmod +x /etc/rc.local 도 괜춘)

(근데 root만 실행권한을 주고 싶다면, chmod 700 /etc/rc.local    < 이게 제일 안전하긴함. )

 

 

 

aouto_jupyter.sh

 

sudo chmod 755 auto_jupyter.sh

이 파일도 실행할 것이기 때문에 권한을 줍시다!!.  su asung 커맨드가 asung의 비밀번호를 요구하는 커맨드이기때문에

sudo 권한으로 실행되면 문제가 되지 않고 저 같은 경우 모든 셋팅 후 부팅시 자동으로 아무 문제 없이 잘 실행되었지만,

 

혹시라도 문제가 생긴다면 아래 코드를 추가해주세요. 문제가 없다면 굳이 추가 안하는게 좋은 코드입니다.

sudo chmod +s auto_jupyter.sh

파일이 실행될때 effectice user를 file의 owner로 바꾸어 owner user가 실행한것처럼 해주는 권한입니다. sudo로 만들었다면, sudo 권한으로 실행됩니다. 

 

 

원격으로 jupyter notebook을 백그라운드에서 실행하는 명령어를 담고 있습니다.

 

2줄을 간단하게 설명드리면,

 

su <user_name> -c "명령어"

 

asung user 권한으로 명령어를 실행한다는 뜻입니다.

그냥 명령어만 쓴다면, " " 따옴표로 묶을 필요는 없습니다. 하지만 root권한으로 실행됩니다.

 

root로 실행되게되면 jupyter가사용하는환경변수등이 asung의시스템경로로 잡혀있다면

인식하지 못할 수 있습니다.

 

nohup [명령어]  >  [text_file] &

 

[명령어]로 실행되는 프로그램을 백그라운드로 실행하기 위한 명령어 입니다.

 

> [text_file]          (   >  /home/asung/.jupyter/nohup.out ) 에 해당되는 부분

 

은 생략 가능합니다. 생략할시 명령어를 실행한 위치에 nohup.out을 자동으로 만들어 냅니다.

 

지정한 [text_file]에는 혹시라도 프로그램이 표준출력을 하게되면

이 text_file에 log를 남겨놓게 됩니다.

 

 

jupyter notebook의 원격접속을 위한 셋팅을 알고싶다면.

https://asung123456.tistory.com/33

 

Ubuntu(우분투) Jupyter notebook 원격 접속

고정 ip 혹은 도메인이 없으시다면, 포트포워딩을 통해 연결을 준비해주세요. https://asung123456.tistory.com/4?category=746927 Ubuntu(우분투) ssh server 설치, port forwarding ssh, 홈 desktop으로 ssh ser..

asung123456.tistory.com

 

 

 

그 다음은  /lib/systemd/system/  에 위치한

 

rc-local.service 파일을 수정합니다.

25~26 두줄만 추가

나중에 systemctl enable rc-local.service 명령어를 하기위해서 필요한 설정입니다.

 

$ sudo vi /lib/systemd/system/rc-local.service
[Install]
WantedBy=multi-user.target

 

$ systemctl enable rc-local.service

 

rc-local.service  서비스를 활성화 합니다.  (부팅시 자동 구동)

 

 

rc-local.service는 rc.local을 실행시키고

rc.local은 auto_jupyter.sh를 실행키십니다.

 

이제부터

rc.local에 부팅시 자동으로 실행시키고 싶은 스크립트를 추가하여 수정할 수 있습니다.

 

$ systemctl start rc-local.service
$ systemctl status rc-local.service

 

 

이제 부팅시마다 자동으로 rc-local.service가 실행됩니다.

혹시 실행이 안된다면

15줄에   rc.local 경로가 잘 적혀있는지 확인해주세요

혹은 관련 file등에 실행 권한이 잘 있는지 확인해주세요

 

 

댓글