.D, dizin adlarında ne anlama geliyor?


118

Kendi adlarında .d dizini olan birçok dizin biliyorum:

init.d
yum.repos.d
conf.d

Dizin anlamına mı geliyor? Eğer öyleyse, bu neye aykırı geliyor?

GÜNCELLEME: Bunun ne .danlama geldiğiyle ilgili çok ilginç cevaplar aldım, ancak sorumun adı iyi seçilmedi. Ben "ortalama" yı "sıranın" olarak değiştirdim.


9
Kökeni için .d, Ask Ubuntu'da bu konu hakkında msw'nin yorumuna bakın .
Gilles

@Gilles, ha, Sistem-V’den sonra olduğunu düşünüyordum, ama evet, hala söyleyebileceğim bir şey yok.
NJ

@Gilles: İlginç, cevap gibi görünüyor: bağlantınızda ilk yanıt ilk açıklama gereği açıklama kayboldu ...
greg0ire

Emin değilim neden .diçinde init.d, ancak neredeyse tüm görünüyor özel yapılandırma dosyaları gidin .dRHEL / CentOS / Fedora'da dizinleri.
LiuYan

@Liu Yan - Gerçekten, tutarlı olarak yorumlanabilecek hiçbir şekilde açıklayamadım.
Tim Post

Yanıtlar:


102

Buradaki .dsonek dizin anlamına gelir. Tabii Unix bir dosya türünü belirtmek için bir sonek gerektirmez gibi bu gereksiz olacağını ama bu özel durumda, bir şey (komutları belirsizliği giderecek gerekli olduğunu /etc/init, /etc/rc0, /etc/rc1ve benzeri) ve onlar (kullanmak dizinleri /etc/init.d, /etc/rc0.d, /etc/rc1.d,. ..)

Bu sözleşme en azından Unix System V ile fakat muhtemelen daha önce tanıtıldı. initKomut bulunması için kullanılan /etcama şimdi genel olarak /sbin, modern Sistem V işletim sistemleri üzerinde.

Bu kuralın, tek bir dosya konfigürasyon dosyasından tek bir dizinde bulunan birden fazla konfigürasyon dosyasına taşınan birçok uygulama tarafından kabul edildiğini unutmayın. /etc/sudoers.d

Burada yine amaç, yürütülebilir dosya ile yapılandırma dosyası arasında değil, eski monolitik yapılandırma dosyası ile bunları içeren dizin arasında adın çakışmasını önlemektir.


4
+1, bence haklısın, ama şu ana kadar kimse teorisi için herhangi bir teklif
vermedi

İnsanların üzerinde gerçek bir standarttan ziyade bir tür
yetişme

1
Seçeneği (açıkça belirtilmiş veya ortam değişkeninin bir parçası ) kullanmadan bir lskomut (değil ls -al) yaptığınızda , ".d" değerine sahip olmak, dizinleri listeden öne çıkarır. Bu yüzden her zaman yapıldığını düşündüm. --colorLS_OPTIONS
LawrenceC

^ color, dizinleri görsel olarak işaretlemenin tek veya en iyi yolu değildir. ls -FBunu ve daha birçok faydalı şey yapacağım.
underscore_d

56

Bir Debian posta listesinden alıntı (vurgu eklendi):

Dağıtım paketlemesi gittikçe daha yaygın hale geldiğinde, genellikle birden fazla bağımsız paket tarafından sağlanan bu konfigürasyon dosyalarını çoklu parçalardan oluşturmanın daha iyi yollarına ihtiyacımız olduğu anlaşıldı. Bazı paylaşılan servisleri yapılandırması gereken her paket, diğer paketler tarafından kullanılan bir paylaşılan yapılandırma dosyasını düzenlemek zorunda kalmadan, yalnızca yapılandırmasını yönetebilmelidir.

Kabul edilen en genel sözleşme, bu dizine bırakılan herhangi bir şeyin aktif hale geleceği ve bu yapılandırmanın bir parçası olacağı, yapılandırma dosyaları ile dolu bir dizin içermesine izin vermekti. Bu kurallar yaygınlaştıkça, bu dizin genellikle değiştirildiği veya genişlettiği yapılandırma dosyasından sonra seçildi. Ancak, biri aynı dizinde ve aynı isimde bir dosyaya sahip olamadığından, ayırt etmek için bazı yöntemler gerekliydi, bu yüzden .d, yapılandırma dosyası adının sonuna eklendi. Bu nedenle, / etc / Muttrc konfigürasyon dosyası /etc/Muttrc.d, / etc / bash_completion içindeki /etc/bash_completion.d/* ve benzerleriyle çoğaltıldı. Bazen /etc/xinetd.conf veya / etc / apache2 / conf'i tamamlamak için /etc/xinetd.d gibi bu kural üzerinde küçük değişiklikler olabilir. d /etc/apache2/apache2.conf dosyasını tamamlamak için. Ama aynı temel fikir.

Genel olarak * .d kuralını gördüğünüzde, "bu, bazı servisler için yapılandırmayla birleştirilecek bir sürü yapılandırma parçasını içeren bir dizindir" anlamına gelir.


2. bölüm için, ".d" nedeni, en iyi tahminim , ana yapılandırma dosyasının bir parçası değil, yine de yapılandırmanın bir parçası olduğu gibi "dağıtılacak" .


8
Şaşırtıcı ... Bunun "yapılandırma" nın dizin kısmı olduğu anlamına gelen "dizin" lehine olduğunu düşünürdüm.
greg0ire

2
Açıkça öyle. Neden biri bunu okuyup, bunun .danlamı her şeyin benden ötesinde olduğu sonucuna vardı ? Ancak bu kaynak, Debian'ın yalnızca bir bağlamda Unix'in ilk günlerinden beri var olan bir konvansiyonu kullanmasının gerekçesini gösterir. Bu Debian sağlayıcısının kasıtlı olarak basitleştirilip basitleştirilmediğini merak etmeliyim - ya da gerçekten Debian'ın bu uygulamayı icat ettiğini düşündüm.
underscore_d

11

Dizin adlarının sonunda ".d" hakkında konuşursanız, bu cevap doğrudur, bu sadece "dizin" için bir işaretleyicidir.

Daemon'u temsil eden "syslogd" gibi bir dosya adında ve "d" ile karıştırmayın . Arka planda çalışan bir bilgisayar işlemi.

Bir daemonun ana süreci, genellikle init işlemidir (PID = 1). Süreçler genellikle bir çocuk sürecini isteyerek ve daha sonra üst süreçlerini derhal bırakarak, böylece çocuk sürecini benimsemeye neden olarak dademon olur. Bu daemon sürecini kontrol eden herhangi bir tty'den ayırmak gibi genel olarak başka işlemler gerçekleştirildiği için sürecin biraz basitleştirilmiş bir görüntüsüdür. Daemon (3) gibi kolaylık rutinleri bu amaç için bazı UNIX sistemlerinde bulunmaktadır.


Pek sayılmaz, bunlar dizin isimleri.
Keith,

@Keith: oops, yanlışlıkla syslogd".d" ile biten dizinler değil , "d" ile biten dosyalar hakkında konuştuğunu düşünmüştüm . Yakında düzenlerim.
Philomath

Ben de öyle düşünmüştüm, ama o programlar için yapılandırma dizinleri sık kullanılan bakınız yok mesela Artalanda, sysctl.d, modprobe.d.. o uygunsuz kullanım olurdu?
Tim Post

@Tim Post: Yukarıdaki 2 yoruma bakınız (ve Keith'in cevabı), yakında cevabımı düzenleyeceğim.
Philomath

Düzenlendi (15 chr)
Philomath

4

Bu, kendi başına dizin anlamına gelmez, temelde olan şey, sona eren dizinlerin .d(bunların genellikle yalnızca içeride olduklarını unutmayın /etc) yapılandırma parçaları almasıdır.

Bu, örneğin dağıtımların evrensel varsayılanları içerebileceği şekilde tasarlanmıştır /etc/yum.conf, ancak daha sonra kullanıcıların veya diğer paketlerin kendi üzerine yazılmadıklarını güvenli bir şekilde ekleyemeyecekleri kullanımı kolay bir yöntem vardır.

Yum için bir örnek olarak ...

RHEL5 veya CentOS Box'umda EPEL kullanmaya başlamak istersem, varsayılan yapılandırmamı değiştirmeden veya dosya çakışmasına neden olmadan, dosyayı otomatik olarak oluşturan epel-bırakma paketini /etc/yum.repos.dklasörde (örneğin /etc/yum.repos.d/epel.repo) ayarlayabilir veya yükleyebilirim Olmasına gerek yok.

Ne olacak, çoğu program varsayılan konfigürasyonunu okuyacak ( /etc/yum.conförneğin) ve sonra .dçalışan programa yapılandırma snippet'leri de dahil olmak üzere klasörleri üzerinde yineleme yapacak.

Umarım sizin için açıklar.


+1, bu çok açıklıyor, ancak ... 'd' harfinin seçimi değil.
greg0ire

1
Seçim için bir açıklama yapmak zorunda mı? Sadece zaman içinde geliştirilen bir konvansiyondur, FHS'de tanımlanmış (hızlı bir görünümden) değildir, ancak LSB standardına dahil edilebilir. Cron hatırladığım ilklerden biriydi. (Düzenleme: aslında init olurdu)
NJ

3

Tıpkı dosyaların ne .exttür bir dosya olduğunu belirtmesi gerekebildiği gibi (genellikle "uzantı" olarak adlandırılır), dizinler bazen .dbir dosya değil de bir dizin olduğunu göstermek zorunda kalır. Bu onun tipi. Varsayılan lsçıktı, dizinleri ve dosyaları görsel olarak ayırmaz, bu yüzden .dtürünü (dizinini) bu tür listelerde gösterecek eski bir kuraldır.


6
Ek olarak, .dsonek, benzer şekilde adlandırılmış bir dosyayla çakışmaları önler. Örneğin, bir yapılandırma dosyasına /etc/apt/sources.listve bir yapılandırma dosyaları dizinine sahip olabilirsiniz /etc/apt/sources.list.d.
jmtd

2
^ Bunun bir "ekleme" değil, ilk etapta kongre nedeni olduğunu söyleyecek kadar ileri giderdim. Unix / Linux, özellikle ilk günlerde, uzantıların eklenmesi gerektiğine dair hiçbir zaman kıymetli olmadı, bu yüzden bunun iyi bir sebep olmadan çevrildiğinden şüpheleniyorum.
underscore_d

2

Daha genel olarak, .d dizinleri (/etc/httpd/conf.d, /etc/rc.d, / etc / başka bir örnek), içerdikleri dosyaların eşleşmeleri durumunda sık sık yapılandırma için okunacağını ve kullanılacağını belirtir verilen bir desen ve açıkça bazı ana listeye eklenmesini gerektirmez.

Bu nedenle, * .repo biçimindeki dosyaları /etc/yum.repos.d dosyasına eklerseniz yum, çalıştırırken /etc/yum.conf yapılandırma listesine eklemek zorunda kalmadan kullanacaktır. * .Conf formundaki dosyaları /etc/http/conf.d dosyasına eklerseniz, açıkça /etc/httpd/conf/httpd.conf dosyasına eklenmelerine gerek kalmadan Apache tarafından okunurlar. Benzer şekilde, /etc/init.d içindeki dosyalara chkconfig, /etc/cron.d içindeki cron işleri.


+1, fakat ... yukarıdakiyle aynı açıklama.
greg0ire

1
@greg: Cevapları sıralama şekillerinin çeşitliliği nedeniyle, “yukarıda” ve “aşağıda” diğer cevaplara (yorumlarda) atıfta bulunmanın zayıf yollarıdır. 'En eski' ve 'en yeni' türler, bu tür pozisyon temelli tanımlamalar için zıt anlamlar yaratır ve 'oylama' ile sıralama yaparken iki cevabın göreceli konumu zaman içinde değişebilir.
Chris Johnsen

@Chris Johnsen: Ben farkettim bu, ama çok geç. NJ'nin cevabı hakkındaki yorumuma atıfta bulundum.
greg0ire

1

Bence, .ddizine d aemon ile ilişkili olduğunu belirten bir belge olamaz.

Kanıt, bunun en azından makul olduğunu gösterir:

sudo find / -maxdepth 3 -name "*.d"

Eski Unix tarihinin küçük parçalarının derinliklerinde bir yerde hala örümcek ağlarının arkasındaki aklımın arkasında sallanıyor, bu bana doğru cevap olarak geliyor. İlk memelilerin, dinozorlar ölmeye başlamadan önce dünyayı dolaştığı ve mansayfaların sadece sistemde değil aynı zamanda ayakla ölçülen raflarda fiziksel olarak tutulduğu bir zamandan geldiğine inanıyorum .


Sonunda deliryum için +1, ancak bunun yum.repos.d ile iyi uymadığını düşünüyorum ...
greg0ire 13:10

</cobwebs>.dAmacının, dizini ilgili ve benzer şekilde adlandırılmış dosyalardan ayırmak olduğunu gösteren cevapların doğru cevaplar olduğuna inanıyorum . E-Man ve Jlliagre'inkileri daha fazla oyladım.
Dennis Williamson,

".D" ne anlama geliyor? Sorusudur ve bunun neden ".d" olmasının nedeni ile ilgili birçok açıklama aldım, ancak anlamla ilgili bir cevap veren çok az kaynak belirtmedi. Personel, bence bu dizin anlamına gelir.
greg0ire

1
yumdaha yeni bir buluş.
Dennis Williamson,
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.