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 yararlı oldu.
Ne dendiğini biliyor musun?
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 yararlı oldu.
Ne dendiğini biliyor musun?
Yanıtlar:
tail -F
özellikle günlük dosyası döndürme durumunda yararlı olan dosya nesneleri yerine dosya adlarını izleyecektir.
tailf
artık kullanımdan kaldırıldı ve tail -f
güvende. (bunu sisteminizde onaylayın man tailf
.) Belgelere bakın: man7.org/linux/man-pages/man1/tailf.1.html
Jon Skeet'in cevabına göre, muhtemelen kuyruk demek istedin.
Yararlı bir diğeri ise seyretmek ; düzenli aralıklarla bir komut çalıştırmanıza ve çıktının tam ekranını görmenize olanak sağlar. Örneğin:
-n 10 -d ls-l / var / adm / mesajları izle
ls -l /var/adm/messages
Her 10 saniyede bir komutu çalıştıracak ve sonraki işlemler arasındaki çıktıdaki farkı vurgulayacaktır. (Örneğin, bir günlük dosyasının ne kadar hızlı büyüdüğünü izlemek için kullanışlıdır).
inotifywait
dan Inotify-araçları bir komutunu bir dosya (veya dizin içinde herhangi bir dosya) değişim her zaman çalıştırmak istiyorsanız yararlıdır. Örneğin:
inotifywait -r -m -e modify /var/log |
while read path _ file; do
echo $path$file modified
done
path
Değişken adı için en iyi seçenek olmayan bir not . Açık zsh
, ortam değişkenlerinin büyük / küçük harf duyarlı olmadığı görülüyor. Benim için, ayar yapmak da path
neden olur PATH
ve bu temelde siz bunu düzeltene kadar hiçbir şeyin yürütülmeyeceği anlamına gelir. Açık bash
, ayarın path
etkisi yoktur PATH
.
Ben kullanmayı tercih less +FG
1 üzerinde tail -f
kendimi belirli bir hata veya kimliği için bir günlük dosyası aramak gerek bulmak için. Bir şey ^C
aramam gerekirse, dosyayı izlemeyi bırakıp ?
geriye doğru aramaya başlamak için yazarım.
Anahtar bağlamaları, hemen hemen aynıdır vi
. Herhangi bir komut, başlangıçta +
seçenek kullanılarak başlatılabilir :
+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.
Uzun kayıtlar -n
için satır numaralandırmayı kapatan seçeneği kullanmayı uygun buluyorum . 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. Yorumlarda bunu işaret ettiği için rgmarcha'ya şapka ipucu .
alias
İstediğiniz seçeneklerle bir ayar yapmayı unutmayın, böylece her seferinde bunları yazmanıza gerek kalmaz.
Bir LaTeX dosyasını düzenliyorum ve ortadaki herhangi bir yerdeki değişiklikleri de izlemek istedim. Bana yararlı olduğunu kanıtlayan şu küçük kabuk senaryosunu hazırladım. Umarım bir başkası için de faydalı 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 kaydedin watch.sh
ve yapın chmod u+x watch.sh
. Sonra aşağıdaki gibi yürütüyorum:
./watch.sh file.tex pdflatex
Komutun yalnızca gerçek değişiklik olursa çalıştırılmasını istiyorsanız, `md5sum "$FILE"`
bunun yerine kullanabilirsiniz `ls -l "$FILE"`
.
NEW=`tree -sDct . -I 'ignore_pattern|another_pattern'`
tailf komutunu çok kolay kullanabilirsiniz
tailf logfile.log
Kuyruk standart, geleneksel, her yerde kullanılabilir unix aracıdır. Biraz daha karmaşık bir araç, birden fazla dosyayı aynı anda izleyebilen ve sözdizimi vurgulaması yapan çoklu görevdir .
Dosyayı taramanın yanı sıra dosyayı daha yakından incelemek istersem, "F" komutuyla daha az kullanıyorum.
Kuyruğu kullanırken, dosya yuvarlanıyorsa veya düzenlemeyle değiştiriliyorsa, ek argümanların gerekli olduğunu unutmayın (vimin: w için varsayılan mod).
tail -f, tail'ın dosya tanımlayıcısını depolamasına ve onu izlemesine neden olur. Dosya değiştirilirse, tanımlayıcı değişecektir. Dosya tanımlayıcısını takip etmenin faydası, dosya yeniden adlandırılırsa, hala onu izliyor olmanızdır.
tail --follow = kuyruğun değiştirilip değiştirilmediğini görmek için periyodik olarak yeniden açarak adlandırılmış dosyayı izlemesini sağlar.
- logry, bir günlük dosyasını yerleştirmek istiyorsanız ancak dosya henüz oluşturulmadıysa, başka bir kullanışlı seçenektir.
tail -F, --follow = --retry için bir kısayoldur.
Kuyruğu unutun, diff istediğiniz komuttur. İşte, 2 dosya arasında veya bir dosyada yazılmakta olan gerçek zamanlı (ya da yakın) farkları olduğu gibi izlemek için iyi bir püf noktası.
Bu yöntemleri, davranışı istediğiniz şekilde (örneğin, kayıtları saklamak için bir dosyaya yazmak gibi) değiştirmek için kullanabilirsiniz. Aşağıdaki komutlar için saat aralığı veya diğer seçeneklerle oynayın.
1 dosyanız var ve üzerinde değişiklik yapıldığı için izlemek istiyorsunuz:
Yani heres ne yapacağını:
cp file file2
touch check-differences.sh
nano check-differences.sh
chmod 755 check-differences.sh
#!/bin/bash
diff file file2
cp file file2
watch ./check-differences
bu, varsayılan olarak her 2 saniyede bir güncellenir. Bu yüzden geri dönüp bunları okumak durumundaysanız, diff'in çıktısını komut dosyasındaki bir dosyaya yazın.
veya çıktıyı görmeniz gerekmiyorsa betiğinizi düzenli olarak çalıştırmak için cron kullanın.
tail -f somefile.txt
Yeni verilerle kaydırma yapmaya devam ederken bazenless +G somefile.txt
dosyadaki en son veri düzeltme ekine bakmayı da tercih ederim .