F.3. Running Additional Programs at Boot Time

The /etc/rc.d/rc.local script is executed by the init command at boot time or when changing runlevels. Adding commands to the bottom of this script is an easy way to perform necessary tasks like starting special services or initialize devices without writing complex initialization scripts in the /etc/rc.d/init.d/ directory and creating symbolic links.

The /etc/rc.serial script is used if serial ports must be setup at boot time. This script runs setserial commands to configure the system's serial ports. Refer to the setserial man page for more information.



출처 - http://docs.fedoraproject.org/en-US/Fedora/17/html/Installation_Guide/s1-boot-init-shutdown-run-boot.html






rc.local - 부팅시 자동실행 명령어 스크립트 수행

 

일반적으로 서버 부팅시마다 매번 자동실행되길 원하는 명령어는 /etc/rc.d/rc.local에 넣어주면 된다.

 

이 부분을 알아보기 전에 리눅스 부팅과정에 대한 약간의 이해를 주면 리눅스에서는 실행레벨에 따라 다르게 부팅할 수 있는데 실행레벨에 따라서 설정되어 있는 모든 프로세스들을 실행하게 된다. /etc/inittab파일에는 init가 현재의 실행레벨에서 실행되어야 할 내용들에 대한 설정이 되어 있다.

 

6개의 실행레벨중 기본레벨인 3번레벨의 실행내용들을 간단히 살펴보면, 즉 /etc/rc.d/rc3.d/ 디렉토리의 내용을 살펴보면 아래와 같다.

[root@inter-devel rc3.d]# ll

....

lrwxrwxrwx  1 root root 19  8월 28  2007 K68rpcidmapd -> ../init.d/rpcidmapd
lrwxrwxrwx  1 root root 17  8월 28  2007 K69rpcgssd -> ../init.d/rpcgssd
lrwxrwxrwx  1 root root 16  8월 28  2007 K72autofs -> ../init.d/autofs
lrwxrwxrwx  1 root root 16  8월 28  2007 K73ypbind -> ../init.d/ypbind
lrwxrwxrwx  1 root root 14  8월 28  2007 K74apmd -> ../init.d/apmd

....

lrwxrwxrwx  1 root root 17  6월 12  2007 S95anacron -> ../init.d/anacron
lrwxrwxrwx  1 root root 13  6월 12  2007 S95atd -> ../init.d/atd
lrwxrwxrwx  1 root root 19  6월 12  2007 S96readahead -> ../init.d/readahead
lrwxrwxrwx  1 root root 20  6월 12  2007 S97messagebus -> ../init.d/messagebus
lrwxrwxrwx  1 root root 19  6월 12  2007 S98haldaemon -> ../init.d/haldaemon
lrwxrwxrwx  1 root root 11  6월 13  2007 S99local -> ../rc.local
[root@inter-devel rc5.d]#

 

보 는 바와 같이 각 실행레벨마다 실행될 스크립트들은 모두 링크파일로 존재하며, 실행 스크립트들은 모두 /etc/rc.d/init.d/ 디렉토리에 존재하고 있다. 이 링크에 의해 각 실행단계별로 필요한 프로세스들을 죽이기도 하고 실행시키기도 한다.

 

K로 시작되는 스크립트파일들은 해당 스크립트를 종료하기 위한 것으로서 /etc/rc.d/init.d/디렉토리내에 존재하는 해당 스크립트를 stop인자와 함께 실행한다.

 

S로 사작되는 스크립트파일들은 해당 스크립트를 시작하기 위한 것으로서 /etc/rc.d/init.d/디렉토리내에 존재하는 해당 스크립트를 start인자와 함께 실행한다.

 

그리고 K와 S문자 다음에 있는 두자리의 숫자는 실행순서를 결정하기 위한 것이다.

 

여기서 주의깊게 봐야 할 것은 맨 마지막 스크립트파일이 S99local 이라는 것이다. 보는 봐와 같이 이 파일은 /etc/rc.d/rc.local로 링크되어 있으며 각 실행레벨에서 맨 마지막 단계에 꼭 한번 실행되는 파일이다. 일반적으로 아파치나 MYSQL 등을 컴파일하여 설치한 후에 부팅시마다 매번 자동실행되기 위하여 /etc/rc.d/rc.local 파일에 실행시킬 내용을 넣어두는 이유가 여기에 있다.

 

/etc/rc.d/rc.local 파일에 아파치와 톰캣을 재시작하기 위한 설정부분이다.

참고로 아파치와 톰캣을 재시작할때에는 먼저 톰캣을 시동하고 아파치를 나중에 시동한다.

 #!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

 

source /etc/profile
/usr/local/tomcat/bin/startup.sh
/usr/sbin/apachectl start

 

만약, 사용자들이 리눅스서버에 새로 설치한 툴이나 프로그램을 매번 부팅때마다 자동으로 실행되도록 하려면 이 파일의 맨 마지막에 원하는 실행 명령을 넣어두면 된다.



출처 - http://nuitstory.tistory.com/500






'System > Linux' 카테고리의 다른 글

linux - cron, crontab  (0) 2013.08.23
linux - watch and grep  (0) 2013.07.12
linux - remmina 소개(remote desktop for linux)  (0) 2013.06.15
linux - 공유 라이브러리 등록 및 출력  (0) 2013.06.10
linux - RPM(RPM Package Manager)  (0) 2013.06.07
Posted by linuxism
,