본 포스트에서는 우분투(Ubuntu) 18.04 이후 버전에서 rc.local 을 활성화하는 방법을 알아보겠습니다. 전 세계적으로 가장 많이 사용되는 리눅스 배포판인 우분투(Ubuntu)는 매년 2개의 새로운 버전을 발표합니다. 4월, 10월에 릴리즈를 하는데, 현재 안정화 버전인 18.04 LTS(Long Term Support)에서부터 rc.local 을 이용한 자동 실행 방법이 기본 지원되지 않습니다. 최근 서버 세팅을 할 일이 생겨 단순히 /etc/rc.local 파일을 만들고 재시작을 했더니 실행이 안되더군요… 그래서 rc.local을 활성화하는 방법과 Run Level에 대한 간략한 설명을 덧붙입니다.
우분투(UBUNTU)는 아프리카어로「당신이 있기에 내가 있다(I am because you are)」라는 뜻입니다. 상당히 많은 의미를 가진 단어라고 하는데 그 정신이 참 좋습니다.
rc.local 파일 수동 생성하기
처음 할 일은 /etc/rc.local 파일을 만드는 것입니다. 이전 시스템에서는 기본적으로 이 파일이 있었지만 18.04 이후로는 수동으로 만들어주는 작업부터 시작해야 합니다. 아래 명령을 통해서 rc.local 파일을 만들고 실행 가능한 상태로 변경합니다.
sudo nano /etc/rc.local
#!/bin/bash 자동 실행 명령어 exit 0
sudo chmod +x /etc/rc.local 로 실행 가능한 상태로 변경합니다.
systemd에 런레벨(Run Level) 관련 설정 추가
nano 편집기로 /lib/systemd/system/rc-local.service 에 아래 내용을 추가합니다.
[Install] WantedBy=multi-user.target
전체적으로는 아래 그림과 비슷한 내용입니다.
rc.local 서비스 가능한 상태로 변경 및 실행
최종적으로 아래 명령어를 통해 rc.local 서비스를 실행할 수 있게 합니다.
sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service
실행 중인 상태를 확인하려면 sudo systemctl status rc-local.service 를 실행하면 됩니다.
multi-user.target 이란?
방금 추가한 ” WantedBy=multi-user.target” 의미가 뭘까요? 이것은 systemd에서 의존성을 처리하는 매커니즘입니다. 전통적인 리눅스의 systemV 체계에서 런레벨 2,3,4에 해당한다고 이해하시면 되구요, 이는 콘솔 환경의 부팅이 진행되는 시점에서 “시작”하라는 의미입니다. 아래 그림을 보시면 조금 더 이해가 쉽습니다.
참고로 리눅스에서의 런레벨(Run Level)을 간단히 정리하면 아래와 같습니다. 참고한 페이지
0 runlevel0.target, poweroff.target Shut down and power off
1 runlevel1.target, rescue.target Set up a rescue shell
2,3,4 runlevel[234].target, Set up a non-gfx multi-user shell multi-user.target
5 runlevel5.target, graphical.target Set up a gfx multi-user shell
6 runlevel6.target, reboot.target Shut down and reboot the system
도움이 되셨기를!