Soru Bir dosyadaki değişiklikleri izlemek için Shell komutu - Ne denir?


Unix'te bir dosyayı izlemek ve ona yazılan değişiklikleri görmek için kullanabileceğim bir komut olduğunu biliyorum. Bu özellikle günlük dosyalarını kontrol etmek için oldukça kullanışlıdır.

Ne dediğini biliyor musun?


139
2018-04-30 21:00


Menşei




Cevaplar:


Demek istiyorsun

tail -f logfile.log

?

(Kuyruk için adam sayfa)


188
2018-04-30 21:01



Evet, gerçek zaman. - Adam Gibbins
Sidenote: Eğer dağıtımınız tailf komutunu sağlıyorsa, bunu -f. tailf daha verimli çünkü izlenen dosyaya yazılmadığı sürece erişmesi gerekmiyor (dosya sistemini atime güncellerken monte ettiğinizde erişim engelleniyor.) - Mihai Limbăşan
at süper kullanıcı bir cevap buldum tavsiye kuyruk -F yerine -f de - Rafa
tail -F Özellikle log dosyası döndürme durumunda yararlı olan dosya nesneleri yerine dosya isimlerini takip edecektir. - Amir Ali Akbari
Güncelleme, birkaç yıl sonra: tailf şimdi kullanımdan kaldırıldı ve tail -f güvenlidir. (bunu sisteminizde onaylayın man tailf.) Belgelere bakın: man7.org/linux/man-pages/man1/tailf.1.html - exp1orer


Muhtemelen Jon Skeet'in cevabına göre kuyruk anlamına geliyor.

Bir başka yararlı olan izlemek; periyodik olarak bir komut çalıştırmanızı ve çıktı tam ekranını görmenizi sağlar. Örneğin:

-n 10 -d ls -l / var / adm / mesajlarını izle

Komutu çalıştıracak ls -l /var/adm/messages her 10 saniyede bir sonraki çalışma arasındaki çıkıştaki farkı vurgulayın. (Örneğin bir günlük dosyasının ne kadar hızlı büyüdüğünü izlemek için kullanışlıdır).


114
2018-04-30 21:07





Kullanmayı tercih ederim less +FG1 üzerinde tail -f çünkü kendimi belirli bir hata veya kimlik için bir günlük dosyası aramaya ihtiyaç duyduğumu buluyorum. Bir şey aramam gerekirse, yazarım ^C dosyayı takip etmeyi durdurmak ve ? geriye doğru aramaya başlamak için.

Anahtar bağlamaları hemen hemen aynıdır vi. Herhangi bir komut, başlangıçta kullanarak başlatılabilir. + seçeneği:

+cmd   Causes  the  specified  cmd  to be executed each time a new file is
       examined.  For example, +G causes less to  initially  display  each
       file starting at the end rather than the beginning.

Gerçekten uzun kayıtlar için -n satır numaralandırmayı kapatan seçenek. Manpage'den:

-n or --line-numbers
          Suppresses line numbers.  The default (to use line numbers)  may
          cause  less  to run more slowly in some cases, especially with a
          very large input file.  Suppressing line  numbers  with  the  -n
          option  will  avoid this problem.  Using line numbers means: the
          line number will be displayed in the verbose prompt and in the =
          command,  and the v command will pass the current line number to
          the editor (see also  the  discussion  of  LESSEDIT  in  PROMPTS
          below).

1. Hat-İpucu rgmarcha Bunu yorumlarda belirtmek için.


33
2018-04-30 23:44



Ayarlamak için aliasİstediğiniz seçeneklerle, her seferinde bunları yazmanız gerekmez. - Michael Hampton♦
Aslında, çoğu durumda kabuk işlevlerini diğer adlar üzerinde tercih etmelisiniz. - tripleee


inotifywait itibaren Inotify-araçları Bir dosya (veya bir dizindeki herhangi bir dosya) her değiştiğinde bir komutu çalıştırmak istiyorsanız kullanışlıdır. Örneğin:

inotifywait -r -m -e modify /var/log | 
   while read path _ file; do 
       echo $path$file modified
   done

27
2018-06-02 12:13





Kuyruk harika ... az da kullanılabilir dosya üzerinde daha az başlar, daha az myfile sonra F tuşuna basın. Bu kuyruk olarak daha az harekete sahiptir.


19
2018-04-30 21:04



daha az + F dosyam da bunu yapacak - rgmarcha


Bir LaTeX dosyasını düzenliyorum ve ortada bir yerde değişiklikler için de izlemek istedim. Bana yararlı olduğunu kanıtlayan şu küçük kabuk senaryosunu hazırladım. Umarım başka birine de kullanışlı olur.

#!/bin/bash
FILE="$1"
CMD="$2"
LAST=`ls -l "$FILE"`
while true; do
  sleep 1
  NEW=`ls -l "$FILE"`
  if [ "$NEW" != "$LAST" ]; then
    "$CMD" "$FILE"
    LAST="$NEW"
  fi
done

Olarak kaydet watch.sh ve yap chmod u+x watch.sh. Daha sonra aşağıdaki gibi yürütüyorum:

./watch.sh file.tex pdflatex

Komutun sadece gerçek değişiklik yapılması durumunda çalıştırılmasını istiyorsanız, `md5sum "$FILE"` yerine `ls -l "$FILE"`.


12
2017-10-10 09:32



dizinleri ve içeriklerini tek bir dosya yerine izlemek için: NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'` - Andy


kullanabilirsiniz tailf  en kolay olanına hakim

tailf logfile.log

7
2017-10-15 13:26