Mknod komutu ne için kullanılır?


51

Ubuntu'yu ana işletim sistemim olarak kullanmaya başladım ve yapmamam gereken şeyleri öğrenmek ve geçmişte insanların yaptığı kötü şeyleri öğrenmek istedim. UNIX ve Linux sys yöneticilerinin yenilerken kendi sistemlerinde yaptıkları korku hikayeleri hakkında bu e-postaya rastladım . Birçoğu, bir problemi hem distory etmek hem de çözmek için mknod komutunun kullanılmasını içeriyordu. Bu komutu daha önce hiç duymamıştım ve Ubuntu içindeki man sayfası çok yardımcı olmuyor. Öyleyse sorum şu, bu komut ne için kullanılıyor ve günlük kullanımda yararlı olduğu bazı örnekler nelerdir?

Yanıtlar:


47

mknodbaşlangıçta, karakter oluşturmak ve bunları dolduran aygıtları engellemek için kullanıldı /dev/. Bugünlerde olduğu gibi yazılım udev, ilgili donanımlar çekirdek tarafından algılandığında sanal dosya sistemindeki aygıt düğümlerini otomatik olarak oluşturur ve kaldırır, ancak başlangıçta /devyalnızca /yükleme sırasında yerleştirilen bir dizindi.

Yani evet, neden tamama yakın afet durumunda /devsanal dosya sistemi yüklemek için değil ve / veya udevkullanarak, olağanüstü başarısız mknodalmak için en az bir temel cihaz ağacı yeniden doldurmak, zahmet gerektiren bir şey yapılabilir kadar geri ... Ama evet, bu sistem yöneticisi korku var Hikaye zamanı. Şahsen, kurtarma USB çubuğu veya CD'si öneririm.

Adlandırılmış yöneltmeler oluşturmanın yanı sıra, bir son kullanıcının kendileriyle ilgilenmesi gereken tek bir günlük kullanım düşünemiyorum - ve bu bile 'günlük kullanım' tanımını genişletiyor.


Yani gerçekten sisteme bağlı cihazlar tarafından sistemle iletişim kurmanın bir yolu olarak kullanılan ve sürücüyle nasıl iletişim kuracaklarını öğrenmek zorunda kalmayan, sanal bir dosya oluşturmanın çok özel bir yolu.
Mark Tomlin

1
Fakat udevLinux'a özgü, değil mi? Belki de diğer Unix benzeri sistemler hala manuel olarak cihaz yaratıyor mu?
Faheem Mitha

2
@ mark Er, hayır. Sanal aygıt dosyaları oluşturmak, yazılımın aygıtla sürücüsü aracılığıyla nasıl iletişim kurması gerektiğidir . Sürücü kancayı çekirdekte oluşturur; mknod, kancayı, ardından yazılımın bağlanabileceği bir cihaz dosyasına bağlayan cihaz dosyasını oluşturur.
Shadur

@ Faheem Emin değilim; FreeBSD kullanıyor gibi görünüyor devfsve / veya devdfakat kişisel deneyimim yok. Diğer sendikaların cihaz düğümleri yapma sürecini otomatikleştirmek için kendi yöntemlerini geliştirdiklerini sanıyorum.
Shadur

@mark Örneğin, Alsa, /dev/sndalgıladığı ve desteklediği her ses donanımı bitinin çeşitli elemanlarına karşılık gelen bir dizi düğüm üretir . Ses kullanan yazılım, bu aygıtları, ne tür bir ses kartından konuştuklarını tam olarak bilmeden ses üretmek için kullanabilir.
Shadur

7

Onunla adlandırılmış bir boru yapabilirsiniz.

Bir programla okumak için, bir programla yazmak için kullanıyorum.

İşlemler arasında iletişimi kolaylaştırır.

Aksi halde, mevcut olmayan cihazlar için cihaz dosyaları oluşturabilirsiniz.

Ayrıca: http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds3/mknod.htm


Siz cevabınız doğru olsa da, Shadur tüm okur seviyeleri için açık olan bir cevap verdi, bu yüzden bu soruyu cevaplayanlar için en iyisinin bu olduğunu düşünüyorum.
Mark Tomlin

Biliyorum, pratik bir yaklaşımla anlatmaya çalıştım. mknodAdlandırılmış yöneltme yapmaktan başka bir şey kullanmak nadiren daha fazladır.
polemon,

5

Oracle ASM disk grupları oluşturmak için ham cihazlar üzerinde çalışan Oracle DBA'lar olarak, cihazları bağlamak için düzenli olarak kullanıyoruz mknod.

Yukarıdaki cevaplar, sistem yöneticileri olmadığımız için bana çok yardımcı oldu. Sadece depolama yöneticilerinin kullanım bakış açısına göre nadir olabileceğini, mknodancak Oracle ASM bakış açısına göre ortak bir kullanım olduğunu belirtmek istedim . (Birisi bizim için daha iyi bir yol bulabilir mi?)


1
Linux'ta ASM kullanıyorum ve mknod çalıştırmak için hiçbir nedenim olmadı. Simgeleyen bazı udev senaryolarım var, fakat neye ihtiyacın olduğundan emin değilsin ... Linux'ta değilsen. tabii ki.
derobert

Eğer değişiklik veya eklemeler yaparsanız, Modern Linux sistemlerinde tavsiye edilebilir @JayJee /devile mknodbu değişiklikler sistem yeniden sefere gidecek. udevBunları kalıcı hale getirmek için önyükleme sırasında size değişiklikler / eklemeler yapacak bir komut dosyası veya kural dosyası yazmanız gerekir .
telcoM

3

IMHO, adlandırılmış yöneltmeler yapmak için bile, mkfifo komutu mknod'dan daha iyidir. Birincisi, adında kendi kendini tanımlayıcı, İkincisi, umask ayarlarını geçersiz kılmak için -m seçeneğine izin veriyor.


1
... ve adlandırılmış yöneltmelerden on yıl öncesine kadar yoktu; mknod foo ptek yol olduğunda çoğumuz öğrendik .

Coreutil'lere bakarken yakın zamana kadar mknod'u hiç duymamıştım. Her zaman sadece mkfifo'yu kullandım ...
Altı

0

“Mknod” komutu AT&T tarafından Unix (tm) Sürüm 4'teki lisans sahiplerine verilmiştir. Hepinize bir kopyasını almak için zaman ve para harcamanın değeceğini tavsiye ederim.

Bell Sistemi Teknik Dergisi, 57: 6. Temmuz-Ağustos 1978, s. 1905-1929. UNIX Zaman Paylaşma Sistemi. (Ritchie, DM; Thompson, K.)

Bu konu, özellikle de bu makale, Unix'in (tm) olduğu zarif, kompakt, hızlı, istikrarlı, güvenli ve çok yönlü işletim sisteminin inşasına izin veren çeşitli temel kavramların takdir edilmesine yol açacaktır. Şu anda mevcut olan çeşitli sistemler hala oldukça yönlü ;-)

Burada bunlardan birkaçından bahsetmeye çalışacağım.

1) setuid ve setgid bitleri ve bahsi geçen bitlerin kullanımının, kullanıcıların güvenilir ve güvenilmeyen imtiyaz alanlarına nasıl ayrılmasına izin verdiği. Hop, güvenilir kullanıcılara sistemi “# cd /; rm -rf * .o ”, imtiyazın uygunsuz kullanıldığına ve“ imha alanının ”kullanıldığına dikkat edin. Ayrıca, bir cümlenin alıntılanan bir cümle ile bitmesinin, tam durma sırasını ve kapanış tırnak işaretini belirlediğine dikkat edin. İngilizce gramer berbat (fm). dmr ve ken, semnal patenti halka bağışladı, onları kutsadı.

2) cihazla aynı ad alanıyla dosya erişimi. Burada, kurucular tarafından düşünülmeyen etkinliklerin gerçekleştirilmesi için diğer basit araçlarla birleştirilen küçük bir aracın sade şıklığının güçlü olduğu yer burasıdır.

3) Veri alanındaki bir dosya bir dizedir. Yapı, program alanındaki programlar tarafından uygulanır ve karmaşık İsviçre-Ordu-Bıçak programına sıkı sıkıya bağlı değildir. Apple (R), Microsoft (R) ve IBM (R), daha çok BSTJ okumuş ürünlere sahip olabilirdi.

4) stdin, stdout, stderr.

5) mermiler, yorumlayıcı komut işlemciler, basit araçlarla kolayca birleşebilir.

6) kodu yalnızca iç döngülerde optimize edin, sınırlı zamanınızı ve paranızı önemli olduğu yerlerde kullanın.

7) G / Ç sözdizimini dil çeviri işlemcileri içine gömmeyin.

C. <FORTRAN

8) KISS.

9) “Çok kullanıcılı bir zaman paylaşım sistemi ayaeem sistemi eklentisini iyi bir gerçek zamanlı sisteme uygulamaktan çok daha iyidir”, ben, RSX-11D'ye bir zaman paylaşımı uzantısı, MACRO ile yazılmış küçük araçlar kullanılarak uygulanan 11 kaçınılmaz olduğunda, aksi takdirde daha yüksek seviyeli diller pr betiği oldukça iyiydi, 248k byte PDP-11 // 45'teki 16 kullanıcı (geri kalan çekirdeğin 16k katı hal hafızası). FOCAL, BASIC, FORTRAN IV, C, MACRO-11, eşzamanlı program geliştirme, LAB-11 ve A / D'ye yaratıcı özelleştirilmiş arayüzler kullanarak LAB-11 ve yaratıcı özelleştirilmiş arayüzler kullanarak link düzenleme, program yürütme, toplu, etkileşimli ve kontrol / veri toplama, D / A, yüksek çözünürlüklü saatler, ...

9600baud CRT'ler veya 120cps yazıcılarda 30cps DECwriters ile gözlemlenebilir tahriş edici gecikme düzenleme yok. 300 lpm yazıcı ile biraz sarsıntılı staccato. RJE için UT200 ve 2780. RSX-11M, RSX-11M +, IAS ve VMS'nin ilk sürümlerinden daha hızlı program geliştirme.

Gerçekten basit bir zaman paylaşımı zamanlayıcısı, bir dequeue olarak uygulanan bir önceliğe bağlı ATL'nin mutlu özelliklerini kullanan gerçek zamanlı bir görev olarak uygulanmıştır.

Unix çeşitleri günümüzde hızlı bir şekilde şimşek çakıyor, ancak yalnızca CPU'lar üç saniyede sonsuz bir döngü yapabiliyorlar. Birim.


Lütfen kusura bakma hataları yazın. iPhone ve Parkinson birlikte iyi oynamıyor. C <FORTRAN <COBOL <PL / 1, sol daha iyi.
k6mrm
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.