리눅스 환경에서 재부팅할 때 자동적으로 원하는 스크립트를 실행할 수 있는 방법을 알려드리겠습니다. rc.local 서비스를 이용한 방법인데 직접 사용해보고 정상동작하는 것을 확인하였으니 믿고 따라와주세요 🙂
리눅스 재부팅 후 스크립트 자동실행하는 방법
1. rc.local 파일 생성 및 편집
rc.local
파일이 기본적으로 존재하지 않을 수 있으므로 직접 생성해야 합니다.
sudo vi /etc/rc.local
#!bin/bash
/etc/restart.sh
exit 0
여기서 /etc/restart.sh
는 실행하고자 하는 스크립트의 경로입니다. 원하는대로 설정해주시면 됩니다. 그리고 :w!로 저장한 후 :q로 나와주세요.
2.rc.local 파일에 실행 권한 부여
rc.local
파일에 실행 권한을 부여해야 합니다.
sudo chmod +x /etc/rc.local
3. 스크립트 restart.sh에 테스트내용 작성하기
restart.sh 파일이 정상적으로 실행되는 지 확인하기 위해 다음의 내용을 작성해보았어요.
이제 재부팅하면 /home/test.txt파일명에 restart test라는 내용을 가진 파일이 생성될거에요.
그리고 똑같이 실행 권한을 부여해주세요.
sudo chmod +x /etc/restart.sh
4. rc-local 서비스 수정
이제 rc-local
서비스를 생성하고 활성화해야 합니다. 파일 위치는 다음과 같습니다. /etc/systemd/system/rc-local.service
만약 파일이 없다면 새로 생성해주시고 있다면 수정하시면 됩니다.
sudo vi /etc/systemd/system/rc-local.service
기본적으로 마지막 [install] 부분이 없을텐데요. 해당 내용을 파일에 추가합니다.
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
Install 부분의 내용은 쉽게 설명하자면 부팅이 된 후 로그인을 위해 유저가 타겟으로 바뀔 때 스크립트를 실행한다는 뜻입니다.
5. 서비스 활성화 & 시작 & 확인
이제 rc-local 서비스를 활성화하고 시작합니다.
sudo systemctl enable rc-local
sudo systemctl start rc-local
sudo systemctl status rc-local
status의 결과가 위와같이나오면 정상입니다.
6. 재부팅 후 결과확인
혹시라도 /home/test.txt 파일이 있는 지 확인한 후 시스템 reboot를 진행합니다.
재부팅 한 후 스크립트의 /home/test.txt파일이 생성되어있고, restart test라는 내용이 써져있다면 정상작동한 것입니다.
재부팅 후 확인해보니 정상적으로 test.txt 파일이 생성되었고, 파일 내용도 잘 써져있는 것을 확인할 수 있었습니다.