본문 바로가기

OS/Linux

Linux - CentOS 7이상에서 rc.local 활성화방법

728x90
/etc/rc.local 에 스크립트를 넣고 재부팅후에 실행이 되지않아 확인해보니 7이상부턴 따로 활성화 해야 합니다.
 

왜 rc.local이 비활성화되었는가?

CentOS 7은 부팅 과정과 시스템 서비스를 관리하기 위해 SysVinit 시스템 대신 systemd를 도입했습니다.

systemd가 의존성 관리, 병렬 실행 등 다양한 기능을 제공하여 rc.local은 기본적으로 비활성화되었습니다. 

rc.local 활성화 방법

1. rc.local 파일에 실행권한 부여

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

 

2. rc-local.service 파일 생성

 

# vi /etc/systemd/system/rc-local.service

아래 내용 추가

[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionPathExists=/etc/rc.d/rc.local

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[Install]
WantedBy=multi-user.target

3. 서비스 활성화 및 시작

# systemctl enable rc-local
# systemctl start rc-local

 

/usr/lib/systemd/system/rc-local.service 파일이 있는 경우 2번을 생략해도 됨.

 

 

반응형

 

 

/usr/lib/systemd/system

  • 기본 서비스 파일: 패키지 관리자에 의해 설치된 기본 서비스 파일이 포함됩니다. RPM 패키지를 설치할 때 이 디렉토리에 서비스 파일이 설치됩니다.
  • 패키지 업데이트: 패키지 업데이트 시, 이 디렉토리의 서비스 파일이 업데이트될 수 있습니다. 따라서 사용자가 이 디렉토리의 파일을 직접 수정하는 것은 권장되지 않습니다.

/etc/systemd/system

  • 사용자 정의 서비스 파일: 사용자가 직접 만든 서비스 파일이나, 기본 서비스 파일을 오버라이드하기 위해 사용하는 디렉토리입니다. 이곳에 있는 파일은 패키지 업데이트 시 덮어 쓰이지 않습니다.
  • 심볼릭 링크: 이 디렉토리에는 /usr/lib/systemd/system에 있는 기본 서비스 파일을 참조하는 심볼릭 링크가 있을 수 있습니다. 이 링크는 사용자가 특정 서비스의 동작을 커스터마이즈하거나 활성화/비활성화하는 데 사용됩니다.

주요 차이점

  1. 설치 위치
    • /usr/lib/systemd/system: 패키지 관리자에 의해 설치되는 기본 서비스 파일.
    • /etc/systemd/system: 사용자가 직접 추가하거나 수정한 서비스 파일.
  2. 업데이트 관리
    • /usr/lib/systemd/system: 패키지 업데이트 시 서비스 파일이 업데이트될 수 있음.
    • /etc/systemd/system: 패키지 업데이트의 영향을 받지 않으며, 사용자가 수정한 내용이 유지됨.
  3. 우선순위
    • /etc/systemd/system에 있는 서비스 파일이 /usr/lib/systemd/system에 있는 파일보다 우선적으로 적용됩니다.
    • 기본 서비스 파일을 오버라이드하려면 /etc/systemd/system에 같은 이름의 서비스 파일을 두면 됩니다.

 

 

728x90
반응형