리눅스 시스템의 전원 버튼을 누르거나 가상 머신을 시작하는 순간, 눈에 보이지 않는 곳에서 수많은 과정이 연쇄적으로 진행되어 때로는 1분도 채 되지 않아 완전히 작동하는 시스템이 만들어집니다. 로그오프하거나 시스템을 종료할 때도 마찬가지입니다.
더욱 흥미로운 점은 운영체제가 부팅될 때나 사용자가 로그인·로그아웃할 때 특정 동작을 자동으로 실행하도록 설정할 수 있다는 사실입니다. 이 글에서는 특정 배포판에 종속되지 않는 범용적인 방법으로 이러한 목표를 달성하는 전통적인 기법들을 살펴보겠습니다.
참고: 로그인 및 로그아웃 이벤트에는 Bash를 기본 셸로 사용한다고 가정합니다. 다른 셸을 사용 중이라면 일부 방법이 작동하지 않을 수 있으므로, 확실하지 않은 경우 해당 셸의 공식 문서를 참고하세요.
재부팅 또는 부팅 시 리눅스 스크립트 실행하기
부팅 시점에 명령어를 실행하거나 스크립트를 구동하는 대표적인 방법은 두 가지입니다.
방법 1 – cron 잡(@reboot) 활용
cron 스케줄러는 일반적으로 분/시/일/월/요일 형식으로 실행 주기를 지정하지만, @reboot라는 특수 지시자도 지원합니다. @reboot 뒤에 스크립트의 절대 경로를 적어두면 시스템이 부팅될 때 해당 스크립트가 자동으로 실행됩니다.
다만 이 방법에는 두 가지 주의 사항이 있습니다.
- a) cron 데몬이 반드시 실행 중이어야 합니다(일반적인 환경에서는 항상 실행 중입니다).
- 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)를 각각 cron과 rc.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

두 스크립트 모두 사전에 실행 권한을 부여해야 한다는 점을 잊지 마세요.
$ chmod +x /home/gacanepa/script1.sh $ chmod +x /home/gacanepa/script2.sh
로그인 및 로그아웃 시 리눅스 스크립트 실행하기
로그인 또는 로그아웃 시점에 스크립트를 실행하려면 각각 ~/.bash_profile과 ~/.bash_logout 파일을 사용합니다. ~/.bash_logout 파일은 기본적으로 존재하지 않는 경우가 많으므로 직접 생성해야 할 수 있습니다. 각 파일 맨 아래에 앞서와 같은 방식으로 스크립트를 호출하는 한 줄만 추가하면 설정이 끝납니다.
마무리
이번 글에서는 재부팅, 로그인, 로그아웃 시점에 스크립트를 자동으로 실행하는 방법을 알아보았습니다. cron의 @reboot 지시자와 rc.local은 가장 널리 쓰이는 검증된 방식이며, systemd 환경이라면 커스텀 유닛(service) 파일을 만드는 방법도 좋은 대안이 될 수 있습니다. 추가로 소개할 만한 방법이 있다면 댓글로 알려주세요. 여러분의 의견을 기다립니다!

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