Computer >> 컴퓨터 >  >> 프로그래밍 >> Bash 프로그래밍

리눅스 부팅·재부팅 시 명령어 자동 실행 완벽 가이드: cron부터 rc.local까지

리눅스 시스템의 전원 버튼을 누르거나 가상 머신을 시작하는 순간, 눈에 보이지 않는 곳에서 수많은 과정이 연쇄적으로 진행되어 때로는 1분도 채 되지 않아 완전히 작동하는 시스템이 만들어집니다. 로그오프하거나 시스템을 종료할 때도 마찬가지입니다.

더욱 흥미로운 점은 운영체제가 부팅될 때나 사용자가 로그인·로그아웃할 때 특정 동작을 자동으로 실행하도록 설정할 수 있다는 사실입니다. 이 글에서는 특정 배포판에 종속되지 않는 범용적인 방법으로 이러한 목표를 달성하는 전통적인 기법들을 살펴보겠습니다.

참고: 로그인 및 로그아웃 이벤트에는 Bash를 기본 셸로 사용한다고 가정합니다. 다른 셸을 사용 중이라면 일부 방법이 작동하지 않을 수 있으므로, 확실하지 않은 경우 해당 셸의 공식 문서를 참고하세요.

재부팅 또는 부팅 시 리눅스 스크립트 실행하기

부팅 시점에 명령어를 실행하거나 스크립트를 구동하는 대표적인 방법은 두 가지입니다.

방법 1 – cron 잡(@reboot) 활용

cron 스케줄러는 일반적으로 분/시/일/월/요일 형식으로 실행 주기를 지정하지만, @reboot라는 특수 지시자도 지원합니다. @reboot 뒤에 스크립트의 절대 경로를 적어두면 시스템이 부팅될 때 해당 스크립트가 자동으로 실행됩니다.

다만 이 방법에는 두 가지 주의 사항이 있습니다.

  1. a) cron 데몬이 반드시 실행 중이어야 합니다(일반적인 환경에서는 항상 실행 중입니다).
  2. b) 스크립트 또는 crontab 파일에 필요한 환경 변수가 모두 포함되어 있어야 합니다. 자세한 내용은 StackOverflow의 관련 스레드를 참고하세요.

방법 2 – /etc/rc.d/rc.local 활용

이 방법은 systemd 기반 배포판에서도 유효합니다. 사용하려면 먼저 /etc/rc.d/rc.local 파일에 실행 권한을 부여해야 합니다.

# chmod +x /etc/rc.d/rc.local

그다음 파일 맨 아래에 실행하고 싶은 스크립트 호출을 추가하면 됩니다.

아래 예시는 두 개의 샘플 스크립트(/home/gacanepa/script1.sh/home/gacanepa/script2.sh)를 각각 cronrc.local로 실행한 결과를 보여줍니다.

script1.sh:

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt

script2.sh:

#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

리눅스 부팅·재부팅 시 명령어 자동 실행 완벽 가이드: cron부터 rc.local까지

두 스크립트 모두 사전에 실행 권한을 부여해야 한다는 점을 잊지 마세요.

$ chmod +x /home/gacanepa/script1.sh
$ chmod +x /home/gacanepa/script2.sh

로그인 및 로그아웃 시 리눅스 스크립트 실행하기

로그인 또는 로그아웃 시점에 스크립트를 실행하려면 각각 ~/.bash_profile~/.bash_logout 파일을 사용합니다. ~/.bash_logout 파일은 기본적으로 존재하지 않는 경우가 많으므로 직접 생성해야 할 수 있습니다. 각 파일 맨 아래에 앞서와 같은 방식으로 스크립트를 호출하는 한 줄만 추가하면 설정이 끝납니다.

마무리

이번 글에서는 재부팅, 로그인, 로그아웃 시점에 스크립트를 자동으로 실행하는 방법을 알아보았습니다. cron의 @reboot 지시자와 rc.local은 가장 널리 쓰이는 검증된 방식이며, systemd 환경이라면 커스텀 유닛(service) 파일을 만드는 방법도 좋은 대안이 될 수 있습니다. 추가로 소개할 만한 방법이 있다면 댓글로 알려주세요. 여러분의 의견을 기다립니다!


리눅스 부팅·재부팅 시 명령어 자동 실행 완벽 가이드: cron부터 rc.local까지

Gabriel Cánepa는 아르헨티나 산루이스주 빌라메르세스 출신의 GNU/Linux 시스템 관리자이자 웹 개발자입니다. 세계적인 소비재 기업에서 근무하고 있으며, 일상 업무 전반에서 FOSS(자유·오픈소스 소프트웨어) 도구를 활용해 생산성을 높이는 일에 큰 보람을 느낍니다.

TecMint의 모든 튜토리얼은 숙련된 리눅스 시스템 관리자 팀이 높은 품질 기준에 맞춰 제작합니다.