Search

리눅스에서 init의 실행 시점에 대하여

생성일
2021/05/12 12:12
수정일
2023/03/06 02:11
태그
IT
리눅스
2 more properties
리눅스에서는 '부팅 시' 자동으로 스크립트를 실행시키는데 몇 가지 방법이 있다.

1. 크론탭 리부트(@reboot)

크론탭에서 '부팅 시' 스크립트를 실행하도록 할 수 있다.
crontab -e 로 크론탭 페이지를 연다.
crontab @reboot /usr/bin/logger '[init] crontab'
Bash
복사
자신의 계정에 기입하면 자신의 계정 권한으로, 루트 계정에서 기입하면 루트 계정으로 실행된다.

2. rc.local 파일 스크립트

rc.local 파일은 부팅 시 실행해주는 스크립트이다.
vi /etc/rc.loacl 로 파일을 연다.
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address /usr/bin/logger '[init] rc.local' exit 0
Bash
복사
기입만 해주면 자동으로 실행을 해준다. 종료시 반드시 0을 리턴하라고 되어 있다. 애러가 날 시에는 syslogrc.local이름으로 로그가 기재된다.

3. init.d 서비스

rc.local보다 조금 더 묵직하게 '서비스 스크립트'를 작성하여 데몬으로 실행시키는 것이 가능하다. 이 경우에는 부팅시 자동 실행 외에 service 명령어를 통해 서비스 중지, 재기동 등도 가능하다. 이는 완전한 의미에서의 데몬(daemon) 서비스가 되겠다.
init.d 서비스 스크립트 작성에 자세한 설명은 https://jcdgods.tistory.com/360 에 있다. 여기서는 간단한 테스트 페이지만 작성하겠다.
#!/bin/sh ### BEGIN INIT INFO # Provides: test_service # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Sample service init.d script # Description: Sample service init.d script ### END INIT INFO /usr/bin/logger '[init] init.d' exit 0
Bash
복사
그렇다면, 이 각각의 실행 명령에 대한 실행 시점 및 순서는 어떻게 될까? 위의 내용을 기입 후 재부팅 후에 로그를 조회하면 아래와 같은 결과를 얻을 수 있다.
pi@raspberrypi:~ $ tail -1000 /var/log/syslog | grep "\[init\]" May 12 21:10:54 raspberrypi root: [init] init.d May 12 21:10:54 raspberrypi CRON[421]: (pi) CMD (/usr/bin/logger '[init] crontab') May 12 21:10:54 raspberrypi pi: [init] crontab May 12 21:10:55 raspberrypi root: [init] rc.local
Bash
복사
두 번째 로그는 해당 스크립트를 실행시키겠다는 로그이고, 따라오는 로그가 스크립트 실행에 대한 결과이다.
실행 순서는 데몬 서비스(init.d) →크론탭(crontab) → rc.local 의 순서임을 알 수 있다.
해당 순서를 참고하여 자신에게 필요한 순서에 실행을 시킬 수 있도록 하자.
추가: 오늘날에는 rc.local 파일을 사용하지 않기를 권하고 있다. 해당 내용은 아래 링크를 참고하자.