본문 바로가기

개발/shell

부팅시 자동실행 스크립트

crontab은 자동적으로 프로그램을 실행하게 하는게 맞기는 한데요...
특정시간, 월, 일에 자동으로 그 프로그램을 실행하거든요.
위에 질문한 것처럼 실행하면
계속해서 프로세스가 생성되니 서버가 무리가 가겠지요???
나중에는 메모리를 다 소비하고 버벅댄다든가.....
크론탭에 등록한거 지우고요...

실행시키려는 파일을 부팅시에 자동으로 실행되는 스크립트나 inetd 혹은 xinetd에
넣어 놓으세요....
아파치, imap, sendmail, telnet, ftp 같은 서버데몬들은 거의 대부분 xinetd를 통해서
실행되거든요... 부팅시에 xinetd에 등록된 프로그램들은 자동으로 실행되지요...
다른 방법은 rc.local 에 등록시키는 방법이고요....
다른 하나는 init.d에 등록시켜 놓고 자동으로 실행하는 방법인데요..

이중에 init.d만 설명드릴게요..
xinetd에 넣는 것은 /etc/xinetd.d/ 디렉토리에 있는 설정예제와 /etc/xinetd.conf파일을
보고 공부하시고...
rc.local에 넣는 것은 별로 보기에 좋지 않으니 안쓰는게 낫지요..

init.d에 넣는 것은
우선 /etc/rc.d 라는 디렉토리가 있습니다. 그리고 가서 ls 해보면
[gas16@ns1 rc.d]$ ls
init.d rc rc.local rc.sysinit rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
[gas16@ns1 rc.d]$
이렇게 디렉토리들이 있거든요....
여기서 init.d 디렉토리들을 보면

[gas16@ns1 init.d]$ ls
anacron atd gpm ipchains killall lpd named nfs pcmcia random rusersd sendmail syslog ypbind
apmd crond halt kdcrotate kudzu mars-nwe netfs nfslock portmap rawdevices rwalld single xfs yppasswdd
arpwatch functions identd keytable linuxconf mysqld network opensshd qmail rstatd rwhod snmpd xinetd ypserv
[gas16@ns1 init.d]$

이런식으로 스크립트들이 있습니다.
이 스크립트들 참고해서 스크립트 파일을 만들어도 되고 귀찮으면 그냥 실행시키는 명령만
넣으세요..
간단하게 /usr/bin/a 라는 파일을 실행시키려면
#!/bin/sh
/usr/bin/a
이런식으로요...
그리고 저장한 다음에.... 실행권한을 줍니다.
스크립트 이름이 a_script라면
#> chmod 755 a_script

그냥 이대로 저장한다고 실행되는건 아닙니다ㅏ.

아까 여기서....
[gas16@ns1 rc.d]$ ls
init.d rc rc.local rc.sysinit rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
[gas16@ns1 rc.d]$
이렇게 있었지요??? rc0.d, rc1.d, ..... rc6.d 이런것들의 역할에 대해서는 알거라고 믿고.
텍스트모드로 부팅되는건 rc3.d고, x-window부팅시는 rc5.d, 종료가 rc6.d였던가??? 그럴겁니다.

여기 디렉토리들 안에다가 init.d안에 만든 스크립트를 복사해서 넣어주면 됩니다.
복사하면 괜히 디스크만 낭비하니 심볼릭 링크로 만들어 주면 되겠지요???

#>ln -s /etc/rc.d/init.d/a_script /etc/rc.d/rc3.d/S97a_script
#>ln -s /etc/rc.d/init.d/a_script /etc/rc.d/rc5.d/S97a_script

이런식으로요..
init.d 안에 작성한 스크립트 파일이 문제없이 실행된다면 위에처럼 해주면
아무 문제없이 컴퓨터 부팅시에 자동으로 스크립트가 실행되고 프로그램이 실행됩니다.

'개발 > shell' 카테고리의 다른 글

chmod 권한에 대해서  (0) 2012.02.05
find 명령어  (0) 2012.02.05
오라클 자동 시작 만들기  (0) 2012.02.05
네트웍 활성화  (0) 2012.02.05
사용자 계정 관리  (1) 2012.02.05