/Etc/rc.local ve /etc/init.d/rc.local arasındaki fark nedir?


30

iptablesYeni ürünüme kalıcı bir kural eklemek istiyorum VPSve kısa bir süre sonra google aramasından sonra, bu kuralın eklenebileceği iki yer olduğuna şaşırdım, aynı görünüyor: /etc/rc.localve /etc/init.d/rc.local. Belki birisi neden basit başlangıç ​​kodunun yerleştirileceği iki yerin olduğunu biliyordur? Lezzet linux özgü mü (ama ubuntu her ikisi de var!)? Ya da onlardan biri itiraz edildi mi?


1
Biri diğerine bir bağlantı olmalı.
Ignacio Vazquez-Abrams,

2
@ IgnacioVazquez-Abrams Ubuntu Sunucusu 12.04 x86
LTS'de

1
@ IgnacioVazquez-Abrams: Debian'da onlar da farklı görünüyor.
Emanuel Berg

3
Worth kontrol: Bir sorulan soru hakkında /etc/rc.localbir süre arkasına.
Emanuel Berg

Yanıtlar:


31

/etc/init.dsysvinit malzeme ile geriye dönük uyumluluk için ubuntu üzerinde tutulmaktadır. Aslında bakarsanız /etc/init.d/rc.localgöreceksiniz (ayrıca 12.04 LTS Sunucusundan):

#! /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

Ve "Run /etc/rc.local" tam olarak yaptığı şeydir. Tamamı /etc/rc.localşudur:

#!/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

Bunu yapmanın amacının, önyüklemede çalıştırılmasını istediğiniz kabuk komutlarını koymak için, içinde bulunan stop | start servis işleriyle uğraşmak zorunda kalmadan basit ve basit bir yer sağlamak olduğunu tahmin ediyorum /etc/init.d/rc.local.

Yani aslında bir hizmettir ve bu şekilde çalıştırılabilir. Bir echosatır ekledim /etc/rc.localve:

»service rc.local start
hello world

Ancak, upstart'ın /etc/init(init.d!) Dizinindeki herhangi bir şey tarafından başvurulan olduğuna inanmıyorum :

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

Başlangıçta birkaç "rc" hizmeti var:

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

Ancak bunların hiçbirinin rc.local ile ilgisi yok.


5

Bu daha çok dağılıma özgü bir şey. (örneğin, CentOS'ta farklı bir rc.local bulamazsınız).

Şimdi asıl sorunuza, sanırım /etc/init.d/rc.local içine herhangi bir şey eklemek "hizmet" olarak başlar, oysa /etc/rc.local içindeki herhangi bir şey basitçe o betiği açılışta başlatabilir.

Ubuntu’nun neden ikisini de hala koruduğundan emin değilim? (Belki bir başkası bu bölüme ışık tutabilir !!


"Hizmet olarak" çalıştırılan komut ile "önyükleme sırasında basitçe başlatılan" bir kod arasındaki fark nedir? Güvenlik mi yoksa?
grigoryvp

İkisi arasındaki temel fark, esasen bir Hizmet ve bir süreçtir. ;) Temel amacın sadece güvenlik olacağını tahmin ediyorum. Bu bağlantıyı ilginç bulabilirsiniz: unixmen.com/managing-your-services-and-processes-in-linux
pragmatik

Bu yanlış! Aynı senaryo değil, ancak vardır bir hizmet - /etc/init.d/rc.localyok durdurma başlangıç şeyler /etc/rc.local(daha fazla ayrıntı için benim cevap bakınız).
goldilock

@goldilocks: Çok açıklayıcı ve eksiksiz bir cevap için teşekkür ederim, ancak cevabımın hangi kısmının yanlış olduğunu bilmiyorum. Birini hizmet olarak söylemek, "başlangıç" ve "durdurma" işlemlerini yapabiliyor, diğeri ise basit bir işlemdir. Burada bir anlam ifade etmiyorsam lütfen beni düzeltin.
pragmatik

2
@ pragmatic /etc/rc.localKomut dosyası, komut dosyası tarafından yönetilen yürütülebilir işlem olduğundan, /etc/initd/rc.localtıpkı (örn.) /bin/syslogtarafından yönetilen yürütülebilir işlem olduğu gibi /etc/initd/syslog. Açıkça söylemek gerekirse, /etc/rc.localbu sadece bir boot betiği, /etc/initd/rc.localyani tamamen ayrı bir çalışma seviyesi servisi.
goldilocks
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.