リダイレクトコマンドが予期せず発生しました。

リダイレクトコマンドが予期せず発生しました。

もちろん、この関数にはトレース結果をローカルファイルにエクスポートするstraceオプションがあることを知っています。-oしかし、使いたいです。リダイレクトコマンド(>)ここです。

strace -e trace=file lastb|grep " = 0" >file

これには論理的な問題があります。>最後のものに従ってください。これは私の意図ではありません。次のように括弧を使用しても改善できません。

(strace -e trace=file lastb)|grep " = 0" >file

だから使用する方法リダイレクトコマンド(>)追跡情報を含むファイルを受け取りますか?

答え1

straceはstderr代わりにとして印刷しますstdout。パイプで接続するには、にstderrリダイレクトする必要があります。stdout

strace -e trace=file lastb 2>&1|grep " = 0" > file

また、次にリダイレクトしてlastb通常の出力を抑制することもできます(ここでは、次のように短縮されます)。/dev/null&-

strace -e trace=file lastb 2>&1 >&- | grep " = 0" file

lastb情報をどこで入手できるかを知りたい場合は、通常次の場所にあります。/var/log/btmp

関連情報