logsaveを使用してコマンド出力を保存する方法

1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...

序文

コマンドの出力をファイルに保存する場合はどうしますか?

一般的な方法は、IOリダイレクトを使用することです。


ls >/tmp/ls.txt 2>&1

コマンド出力をファイルに保存しながらコンテンツを画面に出力する必要がある場合は、teeコマンドを使用することもできます


ls |tee /tmp/ls.txt

しかし、私は今日、コマンド出力をファイルに保存しながら、コンテンツページを画面に出力できるlogaveコマンドがあることを発見しました。

logsaveの構文はとてもシンプルです。


logsave [ -asv ] logfile cmd_prog [args ... ]

オプション

-a:指定されたログファイルに情報を追加します。

パラメータ

ログファイル:実行中の情報を記録するためのログファイルを指定します。
命令:実行する必要がある命令。

Logsaveはcmd_prog args …を実行し、コマンド出力のコピーをログファイルに保存します。ログファイルが存在するディレクトリが存在しない場合でも、logsaveは出力をメモリに保存し、ログファイルがあるディレクトリが作成されるまで待ちます。コンテンツはログファイルに書き込まれます

logsaveのこの機能は、システム起動スクリプトでの使用に適しています。/ var /ディレクトリがマウントされるまで出力をメモリに保存し、その内容を/ var / log /

以下の例のように


# 删除存放logfile的目录
rm -rf /tmp/logdir
# 使用logsave保存logfile
logsave /tmp/logdir/logfile bash -c "sleep 2;date"
# 创建logdir
mkdir /tmp/logdir
echo 查看logfile是否生成:
ls -l /tmp/logdir
echo 等待2s后:
sleep 2
echo 再次查看logfile是否生成:
ls -l /tmp/logdir
echo 查看logfile的内容:
cat /tmp/logdir/logfile

2018年 05月 14日 星期一 16:31:44 CST
查看logfile是否生成:
总用量 0
等待2s后:
再次查看logfile是否生成:
总用量 4
-rw-r-r- 1 lujun9972 lujun9972 141 5月 14 16:31 logfile
查看logfile的内容:
Log of bash -c sleep 2;date 
Mon May 14 16:31:42 2018
2018年 05月 14日 星期一 16:31:44 CST
Mon May 14 16:31:44 2018

そこから見ることができます:

logdirが作成された後はlogdirが存在しないため、最初にログファイルを生成することはできませんが、最終的にlogfileを生成してdateコマンドの実行結果を書き込みます。
Logsaveは、コマンドの出力をログファイルに書き込むだけでなく、実行されたコマンド、コマンド実行の開始時間、およびコマンド実行の終了も含みます。

logsave内のcmd_progは特別なものにすることができます。つまり、logsaveは標準入力からログレコードを取得します。これにより、logaveはteeのように使用されます


ls |wc -l |logsave /tmp/1.txt - >/dev/null
cat /tmp/1.txt

要約

上記の内容はすべてこの記事の内容ですが、この記事の内容には皆さんの研究や仕事の参考となる価値があることを願っております。ご不明な点がございましたら、メッセージを残してください。


1 Star2 Stars3 Stars4 Stars5 Stars (まだ評価されていません)
Loading...
      この投稿は審査処理中  | 元のサイトへ