/etc/rc.local과 /etc/init.d/rc.local의 차이점은 무엇입니까? 할 수 있습니다이 있다는 것을

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



답변

/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과 관련이없는 것 같습니다.


답변

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

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

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


답변