Linux G/Ç (Giriş/Çıkış) Yeniden Yönlendirmesinin Nasıl Çalıştığının Temellerini Öğrenin


Linux yönetimi kapsamındaki en önemli ve ilginç konulardan biri I/O yönlendirmesidir. Komut satırının bu özelliği, komutların girişini ve/veya çıkışını dosyalardan ve/veya dosyalara yeniden yönlendirmenize veya "komut hattı" olarak bilinen şeyi oluşturmak için borular kullanarak birden çok komutu birleştirmenize olanak tanır. .

Çalıştırdığımız tüm komutlar temel olarak iki tür çıktı üretir:

  1. komut sonucu – programın üretmek üzere tasarlandığı veriler ve
  2. Kullanıcıyı programın yürütme ayrıntıları konusunda bilgilendiren program durumu ve hata mesajları.

Linux ve diğer Unix benzeri sistemlerde, dosya tanımlayıcı numaraları kullanılarak kabuk tarafından da tanımlanan, aşağıda adı geçen üç varsayılan dosya vardır:

  1. stdin veya 0 – klavyeye bağlıdır, çoğu program bu dosyadaki girişi okur.
  2. stdout veya 1 – ekrana eklenir ve tüm programlar sonuçlarını bu dosyaya gönderir ve
  3. stderr veya 2 – programlar, ekrana eklenen bu dosyaya durum/hata mesajları gönderir.

Bu nedenle, G/Ç yeniden yönlendirmesi, bir komutun giriş kaynağının yanı sıra çıktı ve hata mesajlarının gönderildiği yeri de değiştirmenize olanak tanır. Bu da “< ” ve “> ” yönlendirme operatörleri sayesinde mümkün olmaktadır.

Linux'ta Standart Çıktıyı Dosyaya Yönlendirme

Standart çıktıyı aşağıdaki örnekte olduğu gibi yeniden yönlendirebilirsiniz; burada top komutunun çıktısını daha sonra incelemek üzere saklamak istiyoruz:

top -bn 5 >top.log

Bayrakların olduğu yer:

  1. -btop'un toplu modda çalışmasını sağlar, böylece çıktısını bir dosyaya veya başka bir komuta yönlendirebilirsiniz.
  2. -n – komut sonlandırılmadan önce yineleme sayısını belirtir.

top.log dosyasının içeriğini cat komutunu kullanarak aşağıdaki gibi görüntüleyebilirsiniz:

cat top.log

Bir komutun çıktısını eklemek için “>> ” operatörünü kullanın.

Örneğin, yukarıdaki top komutunun çıktısını top.log dosyasına, özellikle bir komut dosyasına (veya komut satırına) eklemek için aşağıdaki satırı girin:

top -bn 5 >>top.log

Not: Dosya tanımlayıcı numarasını kullanan yukarıdaki çıktı yönlendirme komutu şununla aynıdır:

top -bn 5 1>top.log

Linux'ta Standart Hata Dosyaya Nasıl Yönlendirilir

Bir komutun standart hatasını yeniden yönlendirmek için, kabuğun ne yapmaya çalıştığınızı anlaması için dosya tanımlayıcı numarasını (2) açıkça belirtmeniz gerekir.

Örneğin aşağıdaki ls komutu, root ayrıcalıklarına sahip olmayan normal bir sistem kullanıcısı tarafından yürütüldüğünde hata üretecektir:

ls -l /root/

Standart hatayı aşağıdaki gibi bir dosyaya yönlendirebilirsiniz:

ls -l /root/ 2>ls-error.log
cat ls-error.log 

Standart hatayı eklemek için aşağıdaki komutu kullanın:

ls -l /root/ 2>>ls-error.log

Standart Çıktıyı/Hatayı Tek Dosyaya Yönlendirme

Bir komutun tüm çıktısını (hem standart çıktı hem de standart hata) tek bir dosyada yakalamak da mümkündür. Bu, dosya tanımlayıcı numaralarını belirterek iki olası yolla yapılabilir:

1. Birincisi nispeten eski bir yöntemdir ve şu şekilde çalışır:

ls -l /root/ >ls-error.log 2>&1

Yukarıdaki komut, kabuğun önce ls komutunun çıktısını ls-error.log dosyasına (>ls-error.log kullanarak) göndereceği ve ardından şunu yazacağı anlamına gelir: ls-error.log dosyasına yönlendirilen 2 dosya tanımlayıcısına (standart çıktı) gönderilen tüm hata iletileri (2>&1 kullanılarak) ). Bu, standart hatanın da standart çıktıyla aynı dosyaya gönderildiğini ima eder.

2. İkinci ve doğrudan yöntem şudur:

ls -l /root/ &>ls-error.log

Standart çıktıyı ve standart hatayı tek bir dosyaya şu şekilde de ekleyebilirsiniz:

ls -l /root/ &>>ls-error.log

Standart Girişi Dosyaya Yönlendirme

Komutların tümü olmasa da çoğu, girişlerini standart girişten alır ve varsayılan olarak standart giriş klavyeye eklenir.

Standart girişi klavye dışındaki bir dosyadan yeniden yönlendirmek için “< ” operatörünü aşağıdaki gibi kullanın:

cat <domains.list 

Standart Giriş/Çıkışı Dosyaya Yönlendirme

Aşağıdaki gibi sort komutunu kullanarak standart giriş, standart çıkış yönlendirmesini aynı anda gerçekleştirebilirsiniz:

sort <domains.list >sort.output

Boruları Kullanarak G/Ç Yönlendirmesi Nasıl Kullanılır

Bir komutun çıktısını diğerinin girdisi olarak yeniden yönlendirmek için boruları kullanabilirsiniz; bu, karmaşık işlemler için yararlı komut satırları oluşturmanın güçlü bir yoludur.

Örneğin, aşağıdaki komut yakın zamanda değiştirilen ilk beş dosyayı listeleyecektir.

ls -lt | head -n 5 

Burada seçenekler:

  1. -l – uzun listeleme biçimini etkinleştirir
  2. -t – değişiklik zamanına göre sıralayın; en yeni dosyalar ilk önce gösterilir
  3. -n – gösterilecek başlık satırı sayısını belirtir

Boru Hatları Oluşturmak İçin Önemli Komutlar

Burada, komut işlem hatları oluşturmak için iki önemli komutu kısaca gözden geçireceğiz ve bunlar:

Standart girişten komut satırları oluşturmak ve yürütmek için kullanılan xargs. Aşağıda xargs kullanan bir ardışık düzen örneği verilmiştir; bu komut, bir dosyayı Linux'ta birden çok dizine kopyalamak için kullanılır:

echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

Ve seçenekler:

  1. -n 1 – xargs'a komut satırı başına en fazla bir argüman kullanması ve cp komutuna göndermesi talimatını verir
  2. cp – dosyayı kopyalar
  3. -v – kopyalama komutunun ilerleme durumunu görüntüler.

Daha fazla kullanım seçeneği ve bilgi için xargs kılavuz sayfasını okuyun:

man xargs 

tee komutu standart girdiyi okur ve standart çıktıya ve dosyalara yazar. Tee'nin nasıl çalıştığını şu şekilde gösterebiliriz:

echo "Testing how tee command works" | tee file1 

Dosya veya metin filtreleri, komutların çıktısını yeniden yapılandırmak (bu, yararlı Linux raporları oluşturmak için hayati olabilir), dosyalardaki metni değiştirmek ve diğer bazı Linux sistem yönetimi gibi bilgileri güçlü yollarla işlemek için etkili Linux dosya işlemleri için kanallarla birlikte yaygın olarak kullanılır. görevler.

Linux filtreleri ve kanalları hakkında daha fazla bilgi edinmek için, Apache Sunucusuna Erişen En İyi 10 IP Adresini Bul başlıklı bu makaleyi okuyun, filtreler ve kanallar kullanmanın yararlı bir örneğini gösterir.

Bu yazımızda Linux'ta G/Ç yeniden yönlendirmenin temellerini açıkladık. Aşağıdaki geri bildirim bölümü aracılığıyla düşüncelerinizi paylaşmayı unutmayın.