반응형

재부팅 시 자동 마운트를 등록하는 /etc/fstab에서 에러를 잡아내었다. 

참고 : studyheon.tistory.com/7

그 이후 생각해보니 재부팅 시 자동 마운트 말고도 해야할 작업들이 있었다. 

따라서 해야할 목록들을 실행시키는 스크립트를 만들고, 그 스크립트를 자동으로 실행시키기 위하여 어디에 등록해놔야하는 지 알아보았다. 

 

부팅 시 정해진 서비스/스크립트 실행

기존 : init 이라는 프로그램이 담당

현재 : systemd 가 담당

CentOS 7버전 부터 systemd가 담당하고 있다고 한다. 그리고 이 systemd가 rc.local을 실행시켜준다. 따라서 rc.local에 등록을 해주면 부팅 시 실행을 시켜준다. 

그렇다면~ 그냥 등록만 하면 되는가?? 아니였다.. 당연히 설정이 필요하다. 굳이 실행할 서비스가 없다면 켜져있을 필요가 없으니 처음에는 꺼져있을 것이다. 

systemctl status rc-local.service 명령어로 확인해본다. 

q 누르면 종료

한번도 설정하지 않았다면 inactive라고 나와있을 것이고, fail 로 나와있을 수도 있다. 

얘가 켜져있어야 rc.local 파일을 읽어서 실행시킬 수 있다. 따라서 활성화 시켜줘야한다. 

 

설정방법

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

-> 이것은 rc.local이 이 파일의 소유자든, 같은 그룹의 사람이든, 다른 사람이든 실행시킬수 있게 만드는 것이다. 

 

2. systemctl start rc-local.service

-> rc-local.service를 실행시킨다. 

 

3. sytstemctl status rc-local.service

-> 여기서 상태를 확인한다. 

 

이와 같이 나왔다면 아주 잘 성공한 것이다~

하지만... 

Active : fail이라고 나온다면 아주 절망적일텐데 소중한 경험을 할 수 있겠다~ 라고 생각해야한다 ^^ 

(늘 내 뜻대로 잘 안되지...)

 

여기까지 하고 만약 Active가 떴다면 /etc/rc.d/rc.local에 실행할 스크립트를 적어도 리부팅한 결과 아주 잘 작동한다. 

그러나 다음 부분이 있어서 찾아보니 이 다음 부분은 서비스에 해당하는 부분인 것 같다. 

Active가 아니라 fail이라고 떴어도 다음 부분은 서비스 실행이니 따라하도록 한다.

(급하면 밑에 fail 이후 조치를 보시길... )

 

4. vi /usr/lib/systemd/system/rc-local.service

한 뒤 마지막 라인에

[install]

WantedBy=multi-user.target

부분을 추가한다.  

 

5. systemctl enable rc-local.servcie

재부팅 시에도 활성화 되도록 enable 시켜준다. 

 

6. systemctl list-unit-files | grep rc.local

설정되었는 지 확인한다. 

 

자! 이제 위에서 systemctl status rc-local.service 에서 fail 이라고 나오고 밑 쪽에 

 rc-local.service: control process exited, code=exited status=127

이와 같은 에러가 발생하였다면 참고해주시기 바랍니다.

저는 위와같이 status=127 에러를 발생하였고,

열심히 구글링 해봤지만 이와같은 127번 에러는 찾을 수 없었습니다. 

그러나~ 계속 쳐다보다보니 

rc-local.service: control process exited, code=exited status=127

이 부분 위에 보면 어디가 실행이 안되었다. 혹은 어디에서 에러가 났다고 보여집니다.

확인해보니... /etc/rc.d/rc.local 에서 오타가 났음을 확인하였습니다...

따라서 127에러는 /etc/rc.d/rc.local 에서 오타가 났음을 알려주는 코드였습니다....

제 실력을 너무 믿었군요.. 

혹은 오타가 아니더라도 실행할 파일이 해당 위치에 없다던지 이런 오류이니

/etc/rc.d/rc.local을 잘 확인해보시기 바랍니다. 

 

참고 : conory.com/blog/42241  

 

systemd에서 부팅시 실행할 서비스 관리하기 (CentOS 7)

원래 부팅시 정해진 서비스 또는 스크립트를 실행시키는 건 init (System V Init)라는 프로그램의 몫이였습니다. 유닉스가 처음 생길때부터 그래왔고, 지금도 그렇습니다.(하지만 지금은 다른 아이로

conory.com

참고 : keviny.tistory.com/1

 

CentOS7 에서 Systemd로 서비스 등록하기 (+ systemctl vs. service)

CentOS 7부터는 이전에 사용하던 SysV(init system) 대신하여, systemd 을 system & service manager 로 사용합니다. Systemd is a system and service manager for Linux operating systems. It is designed to..

keviny.tistory.com

실행순서 참고 : coding-chobo.tistory.com/68 

 

부팅시 rc.local 활성화 (부팅시 스크립트 자동 실행)

1. "rc.local" 파일의 실행 권항을 부여하기 위해 아래의 명령어를 입력합니다. # chmod +x /etc/rc.d/rc.local 2. 아래의 명령어로 "rc-local.service"의 상태를 확인합니다. # systemctl status rc-local.servi..

coding-chobo.tistory.com

 

 

반응형

+ Recent posts