特定のファイルのアクティビティを追跡する方法[閉じる]

特定のファイルのアクティビティを追跡する方法[閉じる]

現在のサーバーの1つにMAASを展開しました。これはすべて機能します(ほとんどの場合)。 MAASのWOLファイル(/etc/maas/templates/power/ether_wake.template)にいくつかの行を追加しました。このファイルにいくつかの機能を追加したいと思います。

まず、すべてが正常に動作することを確認するためにbashスクリプトを作成し、いくつかのバグを修正した後に正しく動作しました。その後、WOLファイルに追加しました。それ以降はもう機能しません。まあ、私はbashスクリプトや他のものが初めてではありませんが、デバッグ方法がわかりません。エラーログを見ると、そのファイルに関する内容はまったく表示されません。これは、エラーが発生したかどうかに関する一種のヒントを提供します。その場合は、時間の経過とともにこの特定のファイルの出力を追跡するためのCLIツールの種類があるかどうかを知りたいです。可能ですか?全体的に私はこの問題に正しい方法でアプローチしていますか?

答え1

「CLI ツールはその特定のファイルの出力に従ってください。"for a while"はですtail --follow=name --retry filename切り取った。テスト1:

ターミナル1(印刷されていないbar):

$ tail --follow=name --retry test.log
tail: cannot open 'test.log' for reading: No such file or directory
tail: 'test.log' has appeared;  following new file
foo
tail: 'test.log' has become inaccessible: No such file or directory
tail: 'test.log' has appeared;  following new file
baz

NO2。ターミナル:

$ echo foo > test.log
$ echo bar > test.log
$ rm test.log
$ echo baz > test.log

テスト2、ターミナル1:

$ rm test.log
$ tail --follow=name --retry test.log
tail: cannot open 'test.log' for reading: No such file or directory
tail: 'test.log' has appeared;  following new file
1
2
tail: test.log: file truncated
3
4

NO2。ターミナル:

$ echo 1 > test.log
$ echo 2 >> test.log
$ echo 3 > test.log
$ echo 4 >> test.log

試してみたいなら次の出力に従ってください。注文するコマンドの標準出力(および標準エラーも可能)を接続する必要があります。- 端末(コマンドのみ実行)、ファイル(command > my.log 2>&1)、または他のコマンド(command 2>&1 | tail -f)。

関連情報