Linux Ubunt에서 특정 python 프로그램을 부팅 시점에 자동으로 실행하는 방법


1) /etc/profile.d 디렉토리 안에 자동실행 시키고자 하는 프로그램을 위한 쉘 스크립트를 작성한다.

예를 들어 /home/joe/xxx/FrameMove.py를 부팅시 자동 실행시키고자 하다면 /etc/profile.d안에 임의의 

쉘 스크립트를 작성만 해 두면 된다. 그러면 부팅시 /etc/profile.d안에 있는 쉘 스크립트들을 자동으로 실행한다.

   ex)  kkk.sh

        #!/bin/bash

        /home/joe/xxx/FrameMove.py


와 같이 쉘 스크립트를 작성한다.

     

2) python의 소스 코드의 첫 줄에 다음 내용을 추가한다.

   #!/usr/bin/env python


3) 실행하고자 하는 프로그램의 권한을 실행가능 형태로 권한 변경을 한다.

  ex) chmod 777 FrameMove.py


4) 저장장치에 저장되어 있는 파일들을 읽는 것과 같은 코드의 경우는 해당 파일의 절대 경로로 지정해 주어야 자동실행시 문제 없이 동작한다.

예를 들어 


img = Image.open('lenna.bmp')


와 같이 하면 터미널 창에서

python FrameMove.py와 같이 실행시는 문제 없이 실행되나(물론 lenna.bmp가 FrameMove.py와 같은 디렉토리에 있다고 할 경우)

그러나 자동실행의 방식에서는 lenna.bmp의 절대 경로를 명확히 지정해 줘야 자동실행이 가능하다. 아래와 같이 


img = Image.open('/home/joe/xxx/lenna.bmp')


5) 파일 저장을 위해 실행 경로의 권한을 쓰기 권한 부여.

만일 FrameMove.py에서 img.save("ccc.bmp")와 같이 파일을 저장하는 코드가 있다면 아마도 자동실행이 멈추면서 IOError: [Errno 13] Permission denied:라는 에러를 발생 시킬것이다.

이를 위한 해법으로 가장 단순한 방법은 FrameMove.py가 파일을 저장하는 경로의 모든 디렉토리들의 쓰기 권한을 부여하는 방법이다.

예를들어 /aaa/bbb/ccc/에 FrameMove.py가 img.save("ccc.bmp")의 동작을 한다면 aaa, bbb, ccc 디렉토리의 쓰기권한을 부여해주어야 한다.

chmod 777 aaa 

와 같이하면 자동 실행에서의 발생할수 있는 권한 문제를 해결할수 있다.



+ Recent posts