Linux

Linux , Raspberry Pi 시작 프로그램 등록하기(부팅시 프로그램 실행하기)

Dork94 2017. 11. 2. 19:03

Linux환경에서 부팅시에 특정 프로그램을 실행 시켜야 하고 싶을때가 있습니다.


Windows의 경우 시작프로그램에 해당 파일을 옮기면 되지만 Linux의 경우 GUI로 하는 것이 아닌 특정 파일을 생성, 실행시켜야 합니다.


방법으로는 총 여러가지가 있지만 그중에서 편하다고 생각 하는 방법 한 가지를 소개해드리고자 합니다.


우선 한가지 방법으로는 /etc/rc.local 파일에 해당 쉘 스크립트를 등록하는 방법이 있습니다.


쉘 스크립트란? 리눅스 사용자가 실행시킬 명령어를 적어놓은 파일을 말합니다. 그리고 그 파일을 실행 시킬 수 있도록 권한을 주어 실행시키면 파일에 나열한 명령어들을 차례대로 실행하고 종료하는 파일(스크립트)를 이야기합니다.

그러나, rc.local 파일을 직접적으로 수정하는것은 문제의 여지가 있으므로 설명하지 않겠습니다.


다른한가지 방법으로는 update-rc.d 명령어를 이용하여 파일을 추가하는 방법입니다.


사용법은 다음과 같습니다.


# update-rc.d <shell script name> defaults


이때 shell script는 /etc/init.d 폴더 안에 존재해야 하며 실행권한이 있어야 합니다. 또한, 이때 이름이 example.sh과 같이 확장자를 명시하지 않고 example처럼 이름으로만 명시 되어야 합니다. 아래의 예제로 살펴 보도록 하겠습니다.


# vi /etc/init.d/executeOnBoot

ping 8.8.8.8 



아래의 명령어로 실행 권한을 줄 수 있습니다.


# chmod 755 /etc/init.d/executeOnBoot

# update-rc.d executeOnBoot defaults


위와 같이 명령어를 실행하면 linux가 부팅되면 executeOnBoot 파일이 실행되며 안에 있는 내용(ping 8.8.8.8)이 실행되게 됩니다.


삭제는 아래 명령어와 같이 할 수 있습니다.


# update-rc.d -f <shell script name> remove


※해당 쉘스크립트를 이용해 프로그램을 실행하고자 할 경우, 우선 /etc/init.d 폴더로 들어가 해당 쉘 스크립트가 정상적으로 구동되는지 테스트 해보아야 합니다. 왜냐하면, 쉘스크립트의 실행 경로가 /etc/init.d 폴더이므로, 환경변수나 path등의 문제로 프로그램이 원하는 대로 동작하지 않는 경우가 있으니 주의바랍니다.