Ödeme Yöntemleri Abuse

Linux'ta zaman komutu

18.03.2022, 01:39

Bazen Linux terminali ile çalışırken, örneğin sorunları takip etmek için belirli komutların yürütülme zamanını bilmeniz gerekir. Bu amaç için time adında bir yardımcı program vardır. Size Linux time komutunun nasıl çalıştığını ve sözdiziminin ne olduğunu anlatacağız. Daha sonra mevcut seçeneklerin açıklamasına geçeceğiz. Ve sonunda bazı popüler kullanım senaryolarından bahsedeceğiz.

Sözdizimi ve seçenekler

Yardımcı program kullanıcı tanımlı bir komutu çalıştırır ve ardından yürütme süresi hakkında bilgi görüntüler. Sözdizimi oldukça kullanışlıdır. Önce zaman seçeneklerini, sonra çalıştırılacak komutu ve son olarak da komutun argümanlarını belirtmeniz gerekir:

$ time [options] command_to_execute [arguments]

Mevcut seçeneklerin listesini ele alalım:

  • -o, --output - verileri terminaldeki standart çıktı yerine seçilen dosyaya kaydeder. Bu durumda, dosyadaki eski verilerin üzerine yazılacaktır.
  • -a, --append- eskisinin üzerine yazmak yerine dosyaya yeni bilgi ekler. Bu seçenek yalnızca -o ile birlikte kullanıldığında kullanışlıdır.
  • -f, --format- belirli bir çıktı biçimi seçin. Biçimlendirme ile ilgili ayrıntılar bu makalenin bir sonraki bölümünde açıklanmaktadır.
  • -p, --profitably - POSIX 1003.2 standardına uygun bir veri çıktı biçimi kullanın.
  • -v, --verbose- programın yürütülmesi hakkında ayrıntılı bilgi çıktısı verir.
  • -V, --version- zaman yardımcı programının sürümünün çıktısını verir.

Bu liste yalnızca temel seçenekleri içerir. Komutu ile detaylı bilgi alabilirsiniz:

$ man time

Çıktı biçimlendirme seçenekleri

Varsayılan olarak , time bilgileri okumak için rahat olmayan bir biçimde çıkarabilir,

Bunun için şimdi tartışılacak olan çıktı biçimlendirme seçeneklerinin ayarlanması arzu edilir. Bunlardan toplamda üç tane vardır. Örnek olarak apt-get update komutunu ele alalım.

Detaylı bilgi çıktısı almak için -v seçeneği kullanılır:

$ sudo time -v apt-get update

POSIX 1003.2 uyumlu bir formatta veri çıktısı almak için -p seçeneğine ihtiyaç vardır:

$ sudo time -p apt-get update

Biçimlendirme veri satırı tipik olarak kaynak belirticileri ve düz metin içerir. işareti, kendisini izleyen karakterin bir kaynak belirteci olarak ele alınması gerektiğini belirtir.

işareti, sınırlayıcı karakteri belirtmek için kullanılır. Kullanılabilir üç seçenek vardır: t - sekme, n - yeni satır, \ - ters eğik çizgi. Eğer işaretinden sonra başka bir karakter belirtirseniz, terminal bir soru işareti (?) gösterecektir, bu da bir giriş hatası olduğunu gösterir.

Biçim dizesindeki metnin geri kalanı tamamen çıktı alanına kopyalanır. Bu durumda, time her zaman komutun yürütülmesiyle ilgili bilgilerden sonra yeni bir satırdan veri çıktısı vermeye başlar.

Mevcut kaynak belirticilerini ele alalım:

  • % - gerçek %. yani bir yüzde işareti çıktısı almak için komutta %% belirtmelisiniz.
  • C - komut adı ve kullanılan argümanlar.
  • D - bölünmemiş veri alanının ortalama boyutu. Kilobayt olarak gösterilir.
  • E - normal saat formatında komutun yürütülmesinin gerçek zamanı. Saat:]<dakika:saniye olarak görüntülenir.
  • N - işlemin yürütülmesi sırasında meydana gelen ana veya G/Ç hatalarının sayısı.
  • I - dosya sistemi erişimlerinin sayısı.
  • K - kod(metin), başlatılmış veri (veri) veyığın (yığın) için kullanılan belleğin ortalama değeri. Kilobayt cinsinden gösterilir.
  • M - işlem yürütme sırasında yerleşik kümenin kilobayt cinsinden maksimum boyutu.
  • O - dosya sistemi çıkışlarının sayısı.
  • P - CPU (merkezi işlem birimi) yükünün yüzdesi.
  • R - küçük hata sayısı.
  • S - supervisor modunda(çekirdek modu) CPU'nun sistem tarafından süreç adına kullanıldığı saniye cinsinden süre.
  • U - CPU'nun işlem tarafından doğrudankullanıcı modunda kullanıldığı saniye cinsinden süre.
  • W - sürecin RAM'den kaç kez boşaltıldığı.
  • Z - sistem sayfası boyutu. Bu değer bir sabittir, ancak sistemler arasında değişir.
  • c - sürecin yürütülmesi sırasında istem dışı bağlam değiştirme sayısı.
  • e - normal saat formatında komut yürütmenin gerçek zamanı. Saniye cinsinden gösterilir.
  • k - sürece ulaşan sinyal sayısı.
  • p - sürecin paylaşılmamış yığınının kilobayt cinsinden ortalama boyutu.
  • r - alınan soket mesajlarının sayısı.
  • s - gönderilen soket mesajlarının sayısı.
  • t - süreç yerleşik kümesinin kilobayt cinsinden ortalama boyutu.
  • w - sürecin yürütülmesi sırasında gönüllü bağlam değiştirme sayısı
  • x - komut için dönüş kodu.

Bunlar, zaman için biçimlendirme seçilirken kullanılan tüm kaynak belirleyicileriydi. Şimdi komutun kullanım senaryolarına geçelim.

LINUX komut yürütme zamanı

Oldukça yaygın olarak kullanılan üç temel örneğe bakalım: terminale çıktı, ayrı bir dosyaya çıktı ve biçimlendirmeli çıktı.

Çalışma zamanının terminale çıktısı

Örnek olarak, belirli bir süre için duraklatan sleep komutunu ele alacağız. Bu çok açık bir örnek olacaktır, çünkü duraklama süresi zaman içinde komutun yürütülme süresi ile çakışacaktır:

$ time sleep 3

Zaman hemen üç sütuna yazılır. Her birinin üzerinden geçelim:

gerçek - işlemin yürütülmesinin başlangıcından tamamlanmasına kadar geçen toplam süre.

user - sürecinkullanıcı modunda çalıştığı süre.

sys - sürecin gözetmen modunda(çekirdek modu) yer aldığı süre.

Bir sonraki faydalı senaryo, curl yardımcı programı aracılığıyla bir web sayfası başlığının yüklenmesi için geçen sürenin çıktısını almaktır. Örnek olarak web sitemizi ele alalım:

$ time curl -I https://losst.ru

Komutu çalıştırmanın terminal penceresini farklı bir moda geçirdiği bir durumdan bahsetmeliyiz, örneğin /home/root-user/script.txt dosyasını değiştirmek için nano editörünü çalıştırdığınızda:

$ time nano /home/root-user/scripts/main_script.txt

Düzenleyici bittikten sonra, dosya üzerinde çalıştığınız toplam süreyi göreceksiniz.

Artık bir Linux komutunun yürütme süresini nasıl göreceğinizi biliyorsunuz.

Dosya çıktısı

Zaman komutunun sonuçları hakkındaki bilgiler-o seçeneği kullanılarak ayrı bir dosyaya kaydedilebilir. Bu durumda, bunlar terminal penceresinde görüntülenmeyecektir. tar yardımcı programını kullanarak ~/data/data.tar.gz arşivinin içeriğini çıkarma örneğini ele alalım. Yürütme zamanı hakkındaki bilgileri yeni bir ~/data/data_data_time.txt dosyasına kaydedelim. Ayrıntılı bilgi almak için komuta-v seçeneğini de ekleyeceğiz:

$ sudo time -v -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

Dosya aşağıdaki içeriğe sahip olacaktır.

Eğer -o seçeneğini kullanırsanız, çıktı dosyasındaki eski bilgilerin üzerine yeni bilgilerin yazılacağını unutmayın. Bu, yeni dosyalar oluştururken uygulanabilir, ancak günlük kaydı için uygun değildir. İsteğe bağlı -a seçeneğiyle, içeriğin üzerine yazmak yeni bilgi eklemekle değiştirilir:

$ sudo time -v -a -o ~/data/data_time.txt tar -xvf ~/data/data.tar.gz -C ~/data

Biçimlendirmeli çıktı

Orijinal veri biçimlendirme seçeneği her durumda uygun değildir. Örnek olarak, bir arşivi ayıklamak için daha önce kullanılan komutu alacağız, ancak verileri bir dosyaya kaydetmeyeceğiz. Komutu çalıştırırken şunlarla ilgileniyoruz

  • Komutun kendisi ve verilen seçenekler hakkında bilgi - bu %C belirtecidir.
  • CPU yükü - belirteç%P.
  • Saniye cinsinden toplam yürütme süresi - belirteç%e.

Rahat algılama için, her öğe n ayırıcısı kullanılarak ayrı bir satırda görüntülenecektir. Aynı zamanda, hepsi anlaşılabilir bir şekilde imzalanacaktır.

İşte komutun son hali nasıl görünüyor:

sudo time -f "Command info:n%CnCPU usage: %PnExecution time: %e sec" tar -xvf ~/data/data.tar.gz -C ~/data

'den sonraki karakterler hariç tüm metin terminalde tam olarak görüntülenir. Bu, işaretlemenin uygun bir yoludur