tail -f /var/log/syslog | grep
「arpwatch」モードを持ち、jabberを介して各行を独自に送信したいと思います。 xargsの使用xmpp [email protected]
tail -f /var/log/syslog | grep arpwatch | xargs sendxmpp [email protected]
動作しません。
しかし、tail /var/log/syslog | grep arpwatch | sendxmpp [email protected]
良い結果。
私はこれが私が理解していないいくつかの基本的なxargs
問題だと思いますtail -f
。
ベストアンサー1
xargs command
1回の呼び出しでできるだけ多くの入力項目(行、単語)を収集してみてください。注文するで、データ入力にかかる時間は特に気にしません。tail
プロセスが終了するか、バッファxargs
がいっぱいになると実行されます。注文するそして当時受け取った買収。ただし、tail -f
通常はそれ自体は実行されず、コマンドライン引数が非常に制限されている可能性があるため、まったく機能しないようです。
xargs -n1
一度に1つの入力のみを渡すことができます。注文するただし、xargs
スペースを使用すると入力が項目に分割されるため、入力行を使用するとコマンドがfoo bar
2回実行されます。
GNU xargsを使用すると、xargs -n1 -d '\n'
必要な操作を実行できます。注文する入力行ごとに1回、行全体が単一の引数として渡されます。
andを使用または使用せずに試して、-d
出力-n
タイミングを確認してください。
$ ( echo "123 456"; sleep 1; echo foo; sleep 1; echo doo ) | xargs -d '\n' -n1 printf ':%s\n'
xargs -L 1
それも機能しますが、行全体を単一の引数として渡すのではなく、行を別々の引数に分割します。