ファイルを監視し、ファイルに書き込まれている変更を確認するために使用できるコマンドがUnixにあったことは知っています。これは、特にログファイルをチェックする場合に非常に役立ちました。
それが何と呼ばれるか知っていますか?
ジョン・スキートの答えに従って、おそらく尾を意味しました。
別の便利なものは watch ;です。コマンドを定期的に実行して、出力を全画面で表示できます。例えば:
watch -n 10 -d ls -l /var/adm/messages
コマンドls -l /var/adm/messages
を10秒ごとに実行し、後続の実行間の出力の違いを強調表示します。 (たとえば、ログファイルがどれだけ速く成長するかを監視するのに役立ちます)。
inotifywait
from inotify-tools は、ファイル(またはディレクトリ内のファイル)が変更されるたびにコマンドを実行する場合に便利です。例えば:
inotifywait -r -m -e modify /var/log |
while read path _ file; do
echo $path$file modified
done
less +FG
を使用する1 tail -f
以上。ログファイルで特定のエラーまたはIDを検索する必要があるためです。何かを検索する必要がある場合は、^C
と入力してファイルの追跡を停止し、?
と入力して後方検索を開始します。
キー割り当てはvi
とほとんど同じです。 +
オプションを使用すると、起動時にすべてのコマンドを初期化できます。
+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.
本当に長いログの場合、行番号付けをオフにする-n
オプションを使用すると便利です。マンページから:
-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.コメントでこれを指摘するための rgmarcha へのハットチップ。
Tail is great ... lessを使用することもできます。ファイルの開始を少なくします。つまり、myfileを減らしてから押します。 Shift+F。これは尾としての機能が少ない。
私はLaTeXファイルを編集していて、途中のどこかで変更がないか監視したいと思っていました。私は次の小さなシェルスクリプトを作成しました。他の方にも重宝すると思います。
#!/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
watch.sh
として保存し、chmod u+x watch.sh
を実行します。次に、次のように実行します。
./watch.sh file.tex pdflatex
実際の変更が行われた場合にのみコマンドを実行する場合は、`md5sum "$FILE"`
の代わりに`ls -l "$FILE"`
を使用できます。
tailf コマンドを使用できます。
tailf logfile.log
カーネルのinotifyサブシステムにフックするinotifywatch/inotifywaitを使用することもできます。このようにして、「オープン」、「クローズ」、「アクセス」などを監視することもできます。
しかし、単にstdoutに追加された行を取得したい場合は、テールについて同意します。
Tailは、Unixのどこでも利用できる標準的な伝統的なツールです。もう少し洗練されたツールは multitail で、複数のファイルを同時に監視でき、構文の強調表示を行います。
ファイルの末尾だけでなく、ファイル内を検索できるようにするには、「F」コマンドでlessを使用します。
Tailを使用するときは、ファイルがロールオーバーされたり編集によって置き換えられたりする場合(vimの:wのデフォルトモード)、追加の引数が必要になることに注意してください。
tail -fを指定すると、tailはファイル記述子を格納して追跡します。ファイルが置き換えられると、記述子が変更されます。ファイル記述子に従うことの利点は、ファイルの名前が変更された場合でも、それに従っていることです。
tail --follow =は、名前が付けられたファイルを定期的に再度開いて、置き換えられているかどうかを確認することにより、末尾を追跡します。
--retryは、ログファイルをテールしたいがファイルがまだ作成されていない場合に役立つもう1つのオプションです。
tail -Fは--follow = --retryのショートカットです。
Tailfを忘れて、diffは必要なコマンドです。 2つのファイル間または書き込まれている1つのファイル間でリアルタイム(または近い時間)に発生する違いを観察するための良いトリックを次に示します。
これらのメソッドを使用して、変更をファイルに書き込んで記録を保持するなど、動作を自由に変更できます。ウォッチの間隔や以下のコマンドのその他のオプションを試してみてください。
1つのファイルがあり、変更が加えられたときに監視したい場合:
だから何をすべきかここにあります:
ファイルをコピーする
cp file file2
違いを見つけるためのbashスクリプトを記述し、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
これはデフォルトで2秒ごとに更新されます。したがって、戻ってそれらを読み取る必要がある場合は、スクリプトのファイルにdiffの出力を書き込みます。
または、出力を表示する必要がない場合は、cron
を使用してスクリプトを定期的に実行します。
tail -f somefile.txt
は新しいデータでスクロールし続けます、I ときどき好むless +G somefile.txt
同様に、ファイル内の最新データのパッチを確認します。