재부팅 시 자동 마운트를 등록하는 /etc/fstab에서 에러를 잡아내었다.
그 이후 생각해보니 재부팅 시 자동 마운트 말고도 해야할 작업들이 있었다.
따라서 해야할 목록들을 실행시키는 스크립트를 만들고, 그 스크립트를 자동으로 실행시키기 위하여 어디에 등록해놔야하는 지 알아보았다.
부팅 시 정해진 서비스/스크립트 실행
기존 : init 이라는 프로그램이 담당
현재 : systemd 가 담당
CentOS 7버전 부터 systemd가 담당하고 있다고 한다. 그리고 이 systemd가 rc.local을 실행시켜준다. 따라서 rc.local에 등록을 해주면 부팅 시 실행을 시켜준다.
그렇다면~ 그냥 등록만 하면 되는가?? 아니였다.. 당연히 설정이 필요하다. 굳이 실행할 서비스가 없다면 켜져있을 필요가 없으니 처음에는 꺼져있을 것이다.
systemctl status rc-local.service 명령어로 확인해본다.
한번도 설정하지 않았다면 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을 잘 확인해보시기 바랍니다.
참고 : keviny.tistory.com/1
실행순서 참고 : coding-chobo.tistory.com/68