728x90
반응형
SysV 시스템을 사용하는 경우, 프로그램을 자동으로 실행하는 방법은 아래와 같다.
systemd를 사용하는 경우에는 init.d 대신, systemd를 활용해야 한다.
자동 실행 과정
- /etc/init.d/에 스크립트 생성
- 스크립트 실행 권한 변경
- update-rc.d로 런레벨 디렉터리에 필요한 심볼릭 링크 생성
- 시스템 재부팅
스크립트 생성
프로그램이 자동으로 실행되는 순서는 시스템에 정의된 순서에 따라 결정된다.
/etc/init.d 하위 디렉토리에 있는 스크립트들은 이름을 기준으로 오름차순으로 실행된다.
#!/bin/bash
### BEGIN INIT INFO
# Provides: sample_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
PROG="/root/toy_system"
case "$1" in
start)
echo "Starting Toy System"
$PROG &
;;
stop)
echo "Stopping Toy System"
killall $PROG
;;
*)
echo "Usage: $PROG {start|stop}"
exit 1
;;
esac
exit 0
실행 권한 변경
$ chmod 755 toy_system
심볼릭 링크 생성
부팅하는 동안 프로그램 자동 실행을 활성화하려면, 적절한 런레벨 디렉터리에 필요한 심볼릭 링크를 생성해야 한다.
아래 명령어를 실행한 후, 시스템을 재부팅하자.
$ sudo update-rc.d toy_system defaults
런레벨은 시스템의 작동 상태를 결정하며, 서로 다른 시스템 상태/모드를 나타낸다.
일반적으로 런레벨은 일반적으로 아래와 같다.
런 레벨 0 : 시스템 중지 (종료)
런 레벨 1 : 단일 사용자 모드, 필수 서비스만 있는 최소 시스템
런 레벨 2 : 네트워킹이 없는 다중 사용자 모드
런 래벨 3 : 네트워킹이 있는 다중 사용자 모드
런 레벨 4 : custom config로 예약
런 레벨 5 : 네트워킹 및 그래픽 인터페이스(x11)가 있는 다중 사용자 모드
런 레벨 6 : 시스템 재부팅
참고 링크
728x90
반응형