/etc/rc.local과 /etc/init.d/rc.local의 차이점은 무엇입니까?


30

나는 영구적으로 추가 할 iptables나의 새로운에 규칙을 VPS하고, 간단한 구글 후 난, 두 곳이 규칙을 추가 할 수 있습니다이 있다는 것을 놀랐습니다 즉 동일한 것 같아 검색 : /etc/rc.local/etc/init.d/rc.local. 어쩌면 누군가가 간단한 시작 코드를 배치하기 위해 두 곳이 어디에 있는지 알고 있습니까? 그것은 리눅스 풍미에 달려 있습니까 (그러나 우분투에는 둘 다 있습니다!) 아니면 그중 하나가 더 이상 사용되지 않습니까?


1
하나는 다른 하나에 대한 심볼릭 링크 여야합니다.
이그나시오 바스케스-아 브람스

2
@ IgnacioVazquez - 브람스에 우분투 서버 12.04 86 LTS 그들은 :( 완전히 다르다.
grigoryvp

1
@ IgnacioVazquez-Abrams : 데비안에서는 그것들도 다르게 보입니다.
엠마누엘 버그

3
워스 체크 아웃 : 나는 물었다 질문 에 대해 /etc/rc.local잠시 뒤로.
엠마누엘 버그

답변:


31

/etc/init.dsysvinit와의 호환성을 위해 우분투에서 유지됩니다. 실제로 보면 /etc/init.d/rc.local12.04 LTS 서버에서도 볼 수 있습니다.

#! /bin/sh
### BEGIN INIT INFORMATION
# Provides:          rc.local
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/rc.local if it exist
### END INIT INFO

그리고 "/etc/rc.local에 실행" 은 바로 이러한 것입니다. 전체 /etc/rc.local는 다음과 같습니다.

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exit 0

이 작업의 목적은 시작시 서비스 항목을 처리 할 필요없이 부팅 할 때 실행하려는 쉘 명령을 넣을 수없는 간단한 위치를 제공하는 것입니다 /etc/init.d/rc.local.

따라서 실제로 서비스이며 그대로 실행할 수 있습니다. 에 echo줄을 추가했습니다 /etc/rc.local.

»service rc.local start
hello world

그러나 upstart의 /etc/init(init.d! 아님) 디렉토리 에있는 것으로 참조되지는 않습니다.

»initctl start rc.local
initctl: Unknown job: rc.local

시작시 몇 가지 "rc"서비스가 있습니다.

»initctl list | grep rc
rc stop/waiting
rcS stop/waiting
rc-sysinit stop/waiting

그러나 그중 어느 것도 rc.local과 관련이없는 것 같습니다.


5

이것은 배포판에 관한 것입니다. (예를 들어, CentOS에서 다른 rc.local을 찾을 수 없습니다).

이제 실제 질문에 관해서는 /etc/init.d/rc.local 내부에 무언가를 추가하면 "서비스"로 시작하는 반면 /etc/rc.local 내부에는 부팅시 해당 스크립트가 시작됩니다.

왜 우분투가 여전히 두 가지를 모두 유지하는지 잘 모르겠습니다. (아마도 다른 사람 이이 부분에 약간의 빛을 비출 수 있습니다!)


"서비스로 실행되는"명령과 "부팅시 간단히 시작되는"코드의 차이점은 무엇입니까? 보안인가?
grigoryvp

이 둘의 핵심 차이점은 본질적으로 서비스와 프로세스의 차이입니다. ;) 기본 의도는 보안 일뿐입니다. 이 링크가 흥미로울 것입니다 : unixmen.com/managing-your-services-and-processes-in-linux
pragmatic

이것은 맞지 않습니다! 그들은 같은 스크립트 아니지만,이 있는 하나 개의 서비스 - /etc/init.d/rc.local않습니다에 정지 시작 재료 /etc/rc.local(자세한 내용은 내 대답을 참조).
goldilocks

@ goldilocks : 매우 설명적이고 철저한 답변을 주셔서 감사하지만 내 답변 중 어느 부분이 잘못되었다고 확신하지 못합니까? 하나는 서비스라고 말하면 "시작"과 "중지"작업을 수행 할 수있는 반면 다른 하나는 프로세스 일뿐입니다. 이해가 안된다면 수정 해주세요.
실용

2
@pragmatic /etc/rc.local스크립트는 스크립트에 의해 관리되는 실행 가능한 프로세스 이므로 /etc/initd/rc.local(예를 들어) /bin/syslog는에 의해 관리되는 실행 가능한 프로세스 와 같습니다 /etc/initd/syslog. 명시 적으로 이것은 /etc/rc.local부트 스크립트 일뿐 아니라 /etc/initd/rc.local완전히 별도의 실행 레벨 서비스 라고 말합니다 .
goldilocks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.