본문 바로가기

퍼블릭 클라우드

Amazon Linux 2에서 rc-local(rc.local) 서비스를 활성화하는 방법

728x90

Amazon Linux 2에서 rc-local(rc.local) 서비스를 활성화하는 방법

rc-local 서비스 상태 확인

$ systemctl status rc-local.service
● rc-local.service - /etc/rc.d/rc.local Compatibility
   Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static; vendor preset: disabled)
   Active: inactive (dead)

rc-local.service(/lib/systemd/system/rc-local.service) 파일 확인

  • 이 스크립트가 부팅 중에 실행되도록 하려면 'chmod +x /etc/rc.d/rc.local'을 실행해야 합니다.
cat /lib/systemd/system/rc-local.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

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

 

1. rc-local.service(/lib/systemd/system/rc-local.service) 파일 편집

  • [Install]
  • WantedBy=multi-user.target
sudo vim /lib/systemd/system/rc-local.service
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network.target

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

[Install]
WantedBy=multi-user.target
728x90

2. rc-local 스크립트 생성

sudo vim /etc/rc.d/rc.local

rc.local 스크립트 내부에 원하는 명령어를 추가합니다.

#!/bin/bash
echo "Hello, this is rc.local script" > /var/log/rc.local.log

 

3. rc.local(/etc/rc.d/rc.local) 실행 권한 부여

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

 

4. rc-local 서비스 활성화 및 시작

systemctl --now enable rc-local.service

 

5. rc-local 서비스 상태 확인

sudo systemctl status rc-local.service
$ sudo systemctl status rc-local.service 
● rc-local.service - /etc/rc.d/rc.local Compatibility
   Loaded: loaded (/usr/lib/systemd/system/rc-local.service; enabled; vendor preset: disabled)
   Active: active (exited) since Sat 2021-10-30 23:07:17 KST; 1min 15s ago
  Process: 4250 ExecStart=/etc/rc.d/rc.local start (code=exited, status=0/SUCCESS)

Oct 30 23:07:17 vamocha-01 systemd[1]: Starting /etc/rc.d/rc.local Compatibility...
Oct 30 23:07:17 vamocha-01 systemd[1]: Started /etc/rc.d/rc.local Compatibility.

 

6. 로그 확인

rc.local 스크립트의 출력 또는 로그는 /var/log/rc.local.log 또는 다른 지정한 파일에 저장될 것입니다. 필요한 경우 해당 로그 파일을 확인하여 스크립트의 실행 결과를 확인할 수 있습니다.

 

rc-local 스크립트는 시스템 부팅 시 자동으로 실행되는 사용자 정의 스크립트를 추가하는데 유용합니다. 하지만 주의할 점은 스크립트가 부팅 시간을 늘릴 수 있으며, 에러가 발생하면 부팅 프로세스를 중단할 수 있으므로 스크립트를 신중하게 작성하고 디버깅하는 것이 중요합니다.

 

728x90