Linuxターミナル(CentOS)では、このコマンドを使用してtail --follow=name my-rolling-file.log
アプリケーションのログを表示します。
時にはログからいくつかのバイナリデータがダンプされます(私は通常文字列を含みますが、時にはUTF-8の中国語などのバイナリおよび/または特殊文字を含むCamelメッセージの本文をダンプします)。これが発生した場合は、端末を今の|
ようにパイプ文字に変更してくださいö
。
tail
問題を引き起こすことがバイナリデータロギングであると推測しており、特殊文字を無視するようにコマンドを要求することが可能かどうか疑問に思います。マニュアルページを確認しましたが、何も見つかりませんでした。
現在、この問題を解決するには、端末でCtrl-C
コマンドを実行して再起動する必要があります。可能であれば、これらの作業を避けたいと思います。reset
tail
このコマンドに加えて、機能は同じですが(スクロールファイルに従う)他のコマンドを知っている場合は、tail
CentOS 6.5でインストールして実行できる限り、そのコマンドも許可されます。
答え1
tail
次のコマンドを渡して、特殊文字(バイナリデータ)を表示するのに安全な一般文字に変換できますcat -v
。
tail --follow=name my-rolling-file.log | cat -v
(とも呼ばれる)の(詳細)オプションは、および記号を-v
使用して「印刷されない」文字を表示します。cat
--show-nonprinting
^
M-
- 0x00 は次のように表示されます。
^@
- 0x01 は次のように表示されます。
^A
- 0x02は次のように表示されます。
^B
- など。
- 0x7Fは次のように表示されます。
^?
- 0x80-0xFFは次のように表示され、
M-
その後にバイトの下位7ビットが表示されます。
または、これらの文字を削除するには、次のようにします。
tail --follow=name my-rolling-file.log | tr -cd "\t\n -~"
tr
文字を「翻訳」します。つまり、文字をマップします。たとえば、小文字を大文字に変更するために使用できます。この-d
オプションは文字を削除するように指示します。たとえば、tr -d aeiou
すべての(小文字)コレクションを削除します。オプションは-c
補完を意味します。つまり、私が指定した文字以外のすべての文字を実行します。
"\t\n -~"
タブ文字、改行、すべての一般的な印刷可能文字です。
答え2
これはどうですか?
tail --follow=name my-rolling-file.log | strings
デフォルトでは、strings
長さ4(またはそれ以上)の印刷可能文字のみが出力されますが、を使用してそれを変更できます-n {number}
。
答え3
(一部の迷惑な)文字を次のように変換して.
くださいtr
。
tail -f data | tr "\000-\011\013-\037\177-\377" "."
答え4
less
この問題は上手だから解いてみよう。
ページャは、less
出力用のバイナリファイル形式を非常によく指定します。また、スクロールバックや検索などのポケットベル機能が役に立つことがよくあります。
増加するファイルを追跡するための直接的なオプションはありませんが、起動後に「入力」するキーストロークを提供できます。
キーは、Fファイルが大きくなるにつれて開始され、ファイルが大きくなるにつれて画面を更新します。
キーの前に+
not ofを付けて、-
オプションのように使用してください。
変更tail -f
:
less +F growing-file.log
ファイルが移動または削除され、同じ名前で再生成されても、ファイルを名前で追跡し続けるには、オプションを追加します。このオプションは--follow-name
キーの内容Fと+F
実行する操作を変更し、それ自体では開始されません。
変更するtail -F
( --follow=name
):
less --follow-name +F rolling-file.log
ファイルが「バイナリファイル」として認識されると、less
実際にファイルを表示するかどうかを尋ねられます。この問題を回避するには、オプション-f
(--force
)を使用することもできます。
less --follow-name +F -f rolling-binary-file.log
-f
less
(同じオプションでもforの意味は異なりますtail
。)
Ctrl+ を使用するcと、フォローを中断し、後方にスクロールまたは検索できます。
- もう一度フォローしてくださいF。
- ジャンプ開始: g。
- ジャンプ開始: G。
- 捜す: /。
- 辞職する: q。
バイナリ出力の例
$ less +F /usr/bin/vim
"/usr/bin/vim" may be a binary file. See it anyway?
y(防止に使用できます-f
)を押すと画面が表示されます。
^A^@^@^@^@^@<E5>
^A^@^@^@^@^@<E6>
^A^@^@^@^@^@^@^P^A^@^@^@^@^@^B^P^A^@^@^@^@^@8^P^A^@^@^@^@^@F^P^A^@^@^@^@^@
<F1>^A^@^@^@^@^@^P<F1>^A^@^@^@^@^@-<F1>^A^@^@^@^@^@0<F1>^A^@^@^@^@^@i<F1>^A
^L(^@^@^@^@^@^@^@^@^@^@^@^@^@<A3><A5>&^@^@^@^@^@^@^@^@^@^@^@^@^@b['^@^@^@^@
@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@@<A7>&^@^@^@^@
<AB>&^@^@^@^@^@Ȣ&^@^@^@^@^@^L,^@^@^@^@^@^@<FF><FF><FF><FF><FF><FF><FF><FF>
^@^@^@^@^@^@s]&^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^_<D3>%^@^@^@^@^@̢
<AF>&^@^@^@^@^@<CA><(^@^@^@^@^@^B^D^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
<B1>&^@^@^@^@^@^D^D^H^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^R<B1>&^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<A9><B3>&^@^@^@^@^@D<B8>&^@^@
<B5>&^@^@^@^@^@^]T&^@^@^@^@^@^BL^@^@^@^@^@^@H<8A>O^@^@^@^@^@F@^@^@^@^@^@^@
K'^@^@^@^@^@^C<C4><FF><FF>^@^@^@^@^OK'^@^@^@^@^@^C<C3><FF><FF>^@^@^@^@^TK'
#^@^@^@^@^@^D^@^@^@^@^@^@^@<E7>v&^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
#^@^@^@^@^@^D^@^@^@^@^@^@^@<E7>v&^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@
#^@^@^@^@^@p|#^@^@^@^@^@P~#^@^@^@^@^@^@^@^@^@^@^@^@^@^P
#^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@<90>{#^@^@^@^@^@^@^@^@^@^@^@^@^@
Waiting for data... (interrupt to abort)
制御文字はキャレット表記で表示されます(例:(^A
は^@
ヌルバイト))。
また、Control-A文字が後続の文字と異なるように、端末(上記には示されていない)でも強調表示されます^A
。^
A
バイナリ文字構成を表示する方法
~からman less
:
Control and binary characters are displayed in standout (reverse
video). Each such character is displayed in caret notation if possible
(e.g. ^A for control-A). Caret notation is used only if inverting the
0100 bit results in a normal printable character. Otherwise, the char‐
acter is displayed as a hex number in angle brackets. This format can
be changed by setting the LESSBINFMT environment variable. LESSBINFMT
may begin with a "*" and one character to select the display attribute:
"*k" is blinking, "*d" is bold, "*u" is underlined, "*s" is standout,
and "*n" is normal. If LESSBINFMT does not begin with a "*", normal
attribute is assumed. The remainder of LESSBINFMT is a string which
may include one printf-style escape sequence (a % followed by x, X, o,
d, etc.). For example, if LESSBINFMT is "*u[%x]", binary characters
are displayed in underlined hexadecimal surrounded by brackets. The
default if no LESSBINFMT is specified is "*s<%02X>". Warning: the
result of expanding the character via LESSBINFMT must be less than 31
characters.
When the character set is utf-8, the LESSUTFBINFMT environment variable
acts similarly to LESSBINFMT but it applies to Unicode code points that
were successfully decoded but are unsuitable for display (e.g., unas‐
signed code points). Its default value is "<U+%04lX>". Note that
LESSUTFBINFMT and LESSBINFMT share their display attribute setting
("*x") so specifying one will affect both; LESSUTFBINFMT is read after
LESSBINFMT so its setting, if any, will have priority. Problematic
octets in a UTF-8 file (octets of a truncated sequence, octets of a
complete but non-shortest form sequence, illegal octets, and stray
trailing octets) are displayed individually using LESSBINFMT so as to
facilitate diagnostic of how the UTF-8 file is ill-formed.