人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

logファイルの最後数行?数十行だけを常時保存する方法はありませんか?
OS:Linux(組み込み)
あるアプリが固まるため、ログを出力させ固まった瞬間のログを保存したいが
ログを保存するための領域があまりないのと多量にログが出力されるため、固まった瞬間の数行?数十行のログのみを保存したいのですが何かいい方法はないでしょうか。

●質問者: garyo
●カテゴリ:コンピュータ
✍キーワード:Linux OS アプリ ファイル ログ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● iwaamap
●27ポイント

当方はSolarisがメインプラットフォームで

Linuxにはそれほど詳しくないのですが

以下のようなシェルを常駐させてはいかがでしょうか。


(1)tail コマンドで任意の数行を切り出して保存

(2)lsコマンドで対象ログのサイズチェック、直前のチェックとサイズ比較

サイズが変わっていなければ(=アプリが固まってログが更新されなくなった)終了

サイズが変わっていれば(アプリが動作中)処理を継続

(3)任意の時間sleep

(4)(1)に戻る


Manpage of TAIL

http://ktarn.www.linux.or.jp/JM/html/gnumaniak/man1/tail.1.html

◎質問者からの返答

ありがとうございます。

使っているアプリを apl だとして

apl > hoge.log

以下をsleepさせながら回せばいいのかも知れませんが

tail -f hoge.log >foo.log

問題なのはhoge.logのサイズが大きくなって保存しきれない点です(組み込みLinuxなのでファイル領域が小さい)

現在シリアルで接続していますが、コンソール画面に出すと動作が遅くなり、そのせいで異常動作になったのか原因の切り分けが出来なくなって困っています。


2 ● b-wind
●27ポイント

logrotate を使ってはどうでしょうか?

logrotate


OS標準としては単位が日ごとになってしまいますが、設定ファイルを個別に用意して指定してやれば

任意の時間に実行できます。

特定の期間ごとまたはサイズごとにローテートさせ、古いファイルを削除することが簡単になります。

◎質問者からの返答

ありがとうございます。logrotateコマンドは動くみたいです。

以下のような方法で保存するlogに対して上記をどうやって使えばいいかが良く割りません。

apl > hoge.log

※perlは使えないようです。bashとawk,sedくらいしか入ってないと思います。


※すみません。 質問者コメントがおかしいみたいです。http://i.hatena.ne.jp/idea/18547

実験「1,2,3,4,5, ,あ,い,う,え,お」


3 ● dev_zer0
●26ポイント

http://www.linux.or.jp/JF/JFdocs/Bash-Prog-Intro-HOWTO-7.html

touch hoge.txt

while true; do sleep 1; tail hoge.txt >| hoge.tmp; mv hoge.tmp hoge.txt; done &

apl > hoge.log

で一秒ごとにログの最後を取るコマンドを裏で動かしてみるのはどうでしょう?

# 一時ファイルに書き出しているのは同じファイルに書くと変な挙動をするから

◎質問者からの返答

なるほど。ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ