이번 포스팅에서는 리눅스를 사용하면서 새롭게 부팅될 때 마다 자동으로 먼가를 실행하도록 하고 싶을 때, 필요한 rc.local 파일이 없을 때, 이를 수작업으로 활성화 되도록 하게 하는 방법에 대해서 소개하겠다. 우분투 18버전 이후로 rc.local 이라는 파일이 없어졌기 때문에 이것을 이용하려면 따로 활성화를 시켜야 한다.


먼저, 해당 파일이 진짜 없는지부터 확인하자.

cd /etc

를 해서 etc 폴더에 간 후에, 아래와 같이 rc.local 파일을 찾아보자.

find *rc.local*

만약에 파일이 보이면, 이미 해당 파일이 존재하기 때문에 이 포스팅은 보지 않아도 된다. 만약에 아무런 파일도 찾을 수 없다면, 아래를 따라 해보자.

su

먼저 su를 하여 우선은 root 유저로 가자. 이부분의 파일은 대부분 루트 권한이 필요하기 때문에 su로 실행한다.

vi /etc/rc.local

그리고는 위와 같이 rc.local 이라는 파일을 만들고 내용은 아래와 같이 우선 기본 세팅 값만 넣어 두자.

#! /bin/sh exit 0

그리고는 해당 파일을 실행할 것이기 때문에 실행 파일로 변경해주자.

chmod +x /etc/rc.local

그러면 아래와 같이 ls를 했을 때, x가 있으면 된다.

다음으로는 아래의 파일을 수정해줘야 하는데, rc-local.service 라는 파일이다. 아래와 같이 vi 편집기로 해당 파일을 열어서 수정하자.

vi /lib/systemd/system/rclocal.service

이 파일에 포함된 내용을 보면 아래와 같다.

[Unit] Description=/etc/rc.local Compatibility Documentation=man:systemdrclocalgenerator(8) ConditionFileIsExecutable=/etc/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no

여기서 맨 밑에 아래의 내용을 추가해서 넣자.

[Install] WantedBy=multiuser.target

그러면 최종적으로 내용은 아래와 같이 된다.

[Unit] Description=/etc/rc.local Compatibility Documentation=man:systemdrclocalgenerator(8) ConditionFileIsExecutable=/etc/rc.local After=network.target [Service] Type=forking ExecStart=/etc/rc.local start TimeoutSec=0 RemainAfterExit=yes GuessMainPID=no [Install] WantedBy=multiuser.target

자, 드디어 rc.local을 활성화 시킬 준비가 되었다. 이제부터 rc.local을 활성화 시켜보자.

systemctl enable rclocal.service

위와 같이 systemctl 이라는 명령어로 enable 하여 rc.local을 활성화 시킨다.

systemctl start rclocal.service

그리고는 위의 명령어로 rc.local 서비스를 실행시킨다. 자, 그러면 rc.local 서비스가 세팅 되었다. 아래 명령어를 통해서 제대로 rc.local 서비스가 활성화 되었는지 확인해보자.

systemctl status rclocal.service

그랬을 때, 결과는 아래와 같다.

여기서 보면, Active 라고 되어 있는 것을 확인하면 된다. 여기서 뭔가 Failed 되었다고 빨간색으로 표시되면 앞에 과정 중에 문제가 있다는 걸 의미한다. Active 될 때 까지 제대로 과정을 수행해보자. 이후 포스팅에서는 이렇게 활성화 시킨 rc.local을 사용해서 리눅스를 재부팅 할 때 마다 뭔가를 실행시키는 연습을 해보도록 하겠다.