Anasayfa » nasıl » Linux'ta Herşey Dosyadır Nedir?

    Linux'ta Herşey Dosyadır Nedir?

    Linux ve diğer UNIX benzeri işletim sistemlerinin tanımlayıcı özelliklerinden biri “her şey bir dosya” dır. Bu çok basit bir işlemdir ancak ne anlama geldiğini anlamak Linux'un nasıl çalıştığını anlamanıza yardımcı olacaktır..

    Linux'taki birçok şey dosya sisteminizde görünür, ancak aslında dosya değildir. Rasgele bir sayı üreteci dahil, donanım aygıtlarını, sistem bilgilerini ve diğer şeyleri temsil eden özel dosyalardır..

    Bu özel dosyalar, aygıtları temsil eden özel dosyaları içeren / dev gibi ve sistem ve işlem bilgilerini temsil eden özel dosyaları içeren / proc gibi sözde veya sanal dosya sistemlerinde bulunabilir..

    / proc

    Örneğin, CPU'nuz hakkında bilgi bulmak istediğinizi varsayalım. / Proc dizini bu bilgiyi içeren özel bir dosya - / proc / cpuinfo - içerir.

    Size CPU bilgilerinizi söyleyen özel bir komuta ihtiyacınız yok; bu dosyanın içeriğini düz metin dosyalarıyla çalışan herhangi bir standart komutu kullanarak okuyabilirsiniz. Örneğin, komutu kullanabilirsiniz kedi / proc / cpuinfo Bu dosyanın içeriğini terminale yazdırmak için - CPU bilgilerinizi terminale yazdırın. İçeriğini görüntülemek için bir metin düzenleyicide / proc / cpuinfo bile açabilirsiniz.

    Unutmayın, / proc / cpuinfo aslında bu bilgiyi içeren bir metin dosyası değildir - Linux çekirdeği ve proc dosya sistemi bu bilgiyi bize bir dosya olarak gösterir. Bu, bilgileri görüntülemek ve çalışmak için bilinen araçları kullanmamızı sağlar.

    / Proc dizini ayrıca diğer benzer dosyaları da içerir, örneğin:

    • / proc / uptime - Linux çekirdeğinizin çalışma süresini gösterir - başka bir deyişle, sisteminizin kapatılmadan ne kadar süredir açık kaldığı.
    • / proc / version - Linux çekirdeğinizin sürümünü gösterir.

    / dev

    / Dev dizininde aygıtları temsil eden dosyaları ve ayrıca diğer özel şeyleri temsil eden dosyaları bulacaksınız. Örneğin, / dev / cdrom, CD-ROM sürücünüzdür. / dev / sda ilk sabit sürücünüzü temsil ederken / dev / sda1 ilk sabit sürücünüzdeki ilk bölümü temsil eder.

    CD-ROM'unuzu takmak ister misiniz? Mount komutunu çalıştırın ve monte etmek istediğiniz aygıt olarak / dev / cdrom olarak belirtin. İlk sabit diskinizi bölümlemek mi istiyorsunuz? Bir disk bölümleme yardımcı programı çalıştırın ve düzenlemek istediğiniz sabit disk olarak / dev / sda'yı belirtin. İlk bölümü ilk sabit diskinizde biçimlendirmek mi istiyorsunuz? Bir biçimlendirme komutu çalıştırın ve / dev / sda1 biçimine söyleyin.

    Gördüğünüz gibi, bu aygıtları dosya sisteminin bir parçası olarak göstermenin avantajları vardır. Dosya sistemi, tüm uygulamaların cihazları adreslemek ve erişmek için kullanabileceği tutarlı bir "ad alanı" sağlar..

    / dev / null, / dev / random ve / dev / zero

    / Dev dosya sistemi yalnızca fiziksel aygıtları temsil eden dosyaları içermez. İşte içerdiği en önemli üç özel cihaz:

    • / dev / null - Üzerine yazılan tüm verileri atar - bir çöp tenekesi veya kara delik olarak düşünün. Şikayetler göndermenizi söyleyen bir yorum görürseniz / dev / null - bu onları “çöpe atmak” demenin ilginç bir yoludur.
    • / dev / random - Çevresel gürültüyü kullanarak rastgelelik üretir. İçine girebileceğiniz rastgele bir sayı üreteci.
    • / dev / zero - Sıfır üretir - sabit bir sıfır akışı.

    Bu üçünü dosya olarak düşünüyorsanız, onlar için bir kullanım görmezsiniz. Bunun yerine, onları araçlar olarak düşünün.

    Örneğin, varsayılan olarak, Linux komutları hata mesajları ve standart çıktıya yazdırdıkları diğer çıktıları, normal olarak terminali üretir. Bir komut çalıştırmak ve çıktısını önemsemek istemiyorsanız, bu çıktıyı / dev / null yönüne yönlendirebilirsiniz. Bir komutun çıktısını / dev / null dizinine yönlendirmek derhal atar. Her komutun kendi “sessiz modunu” uygulamak yerine, bu yöntemi herhangi bir komutla kullanabilirsiniz..

    komut> / dev / null

    Bir rastgele kaynak bulmak istiyorsanız - bir şifreleme anahtarı oluşturmak için, kendi rastgele sayı üreticinizi yazmanız gerekmez - / dev / random kullanabilirsiniz..

    Bir sabit sürücünün içeriğini 0'lar yazarak silmek için, sürücüyü sıfırlamak için özel bir yardımcı program gerekmez - standart yardımcı programları ve / dev / zero kullanabilirsiniz. Örneğin, gg komutu bir konumdan okur ve başka bir yere yazar. Aşağıdaki komut / dev / zero'dan sıfırları okur ve bunları doğrudan sisteminizdeki ilk sabit disk bölümüne yazar ve içeriklerini tamamen siler..

    (Uyarı: Bu komut, çalıştırırsanız ilk bölümünüzdeki tüm verileri silecektir. Bu komutu yalnızca verileri imha etmek istiyorsanız çalıştırın.)

    dd eğer = / dev / sıfır = / dev / sda1

    Burada dd'yi özel dosyalar (/ dev / zero ve / dev / sda1) ile kullanıyoruz, ancak dd'yi gerçek dosyalardan okumak ve yazmak için de kullanabiliriz. Aynı komut hem cihazları doğrudan yönetmek hem de dosyalarla çalışmak için çalışır..

    açıklama

    Uygulamada, “her şey bir bayt akışıdır” demek, “her şey bir dosyadır” dır. / Dev / random bir dosya değildir, ama kesinlikle bir bayt akışıdır. Ve, bunlar teknik olarak dosya olmasalar da, dosya sisteminde erişilebilir durumdalar - dosya sistemi her şeyin erişilebilir olduğu evrensel bir "ad alanı" dır. Rasgele bir sayı üretecine erişmek mi yoksa doğrudan bir cihazdan mı okumak istiyorsunuz? Her ikisini de dosya sisteminde bulacaksınız; başka bir adreslemeye gerek yok.

    Elbette, bazı şeyler aslında dosya değildir - sisteminizde çalışan işlemler dosya sisteminin bir parçası değildir. “Her şey bir dosyadır” yanlış, ancak bir çok şey dosya gibi davranıyor.