우분투 스타트업 시 스크립트 실행에 대하여

참조 원문 : How to Run Scripts at Ubuntu Startup

  우분투로 부팅할 때 어떤 스크립트를 실행시키게 만드는 일은 레드햇 기반의 리눅스에 비해 어려운 편인데 그 이유는 우분투가 전통적인 Sys-V Init 스크립트 방식 대신 진일보적인 업스타트라는 방식을 메인으로 사용하기 때문입니다. 지금으로서 우분투에서 부팅 시 스크립트를 돌리는 방법으로는 총 세 가지가 있습니다.(업스타트에 대한 자세한 설명은 없군요.)

1. Upstart 방식
  /etc/init.d 디렉토리에는 ‘업스타트 방식을 지원하는 프로그램들의 업스타트 스크립트에 대한 링크’가 전통적인 Sys-V Init 스크립트와 함께 공존하고 있습니다. 예를 들어 아래 중 apache2는 업스타트 방식을 사용하지 않지만 vsftpd는 업스타트를 사용한다는 것을 볼 수 있습니다.

ls -l /etc/init.dtotal 180
-rwxr-xr-x 1 root root 7476 2011-02-22 11:32 apache2
lrwxrwxrwx 1 root root 21 2011-05-21 04:37 vsftpd -> /lib/init/upstart-job


2. 하위호환을 위한 System-V 방식
  우분투가 업스타트를 사용하긴 하지만 많은 프로그램들이 업스타트를 지원하지 않는 탓에 여전히 Sys-V 방식을 지원합니다. 당연히 활용 방식은 다른 레드햇 기반과 동일합니다. 먼저 /etc/init.d 디렉토리 안에 스크립트를 집어넣고 아래와 같은 명령어로 해당 스크립트의 퍼미션을 변경합니다.

chmod 755 myscript

    그 후 원하는 런레벨에 해당하는 디렉토리 안에 심볼릭 링크를 만들어 해당 스크립트에 연결시킵니다. 예를 들어 위 스크립트를 런레벨2(우분투의 디폴트 런레벨로 그래픽 부팅에 해당)에서 실행되게 하려면 /etc/rc2.d 디렉토리 안에 심볼릭 링크를 만들면 됩니다. 역시 다른 리눅스와 마찬가지로 심볼릭 링크의 파일명에서 첫 글자를 S로 하고 그 뒤에 실행 순서용 숫자를 적어줍니다. 높은 숫자일수록 늦게 실행되죠.

ln -s /etc/init.d/myscript /etc/rc3.d/S99myscript

  팁으로 아래 프로그램을 설치 및 실행하여 위 작업을 더 편하게 할 수 있습니다. 물론 설치와 실행 모두 root 권한이 필요합니다.

sudo apt-get install sysv-rc-conf


3. rc.local 파일 사용
  가장 원시적인 방법으로서 /etc/rc.local 파일 안에 실행하고 싶은 명령어를 집어넣으면 2~5 런레벨일 때 해당 명령어를 실행합니다. 디폴트로 주석과 마지막 줄의 exit 0 빼고는 비어있습니다.