• ベストアンサー

Linuxで最後に書き込まれたファイルを調べる方法

CentOSで、インストールした最新のパッケージ5つを調べるのに下記コマンドで調べれることが分かりました。 rpm -qa --last | head -5 パッケージではなく、最後に書き込まれた(=最新書き込み)ファイル5つをコマンドで調べたりすることは出来ないでしょうか? apache等であれば、ログファイルの場所やpidファイルはわかるのですが、 偶にサービスの「ログファイルやpidファイル」の場所が分からないときに、 最新の書き込みファイルを検索できれば、ログファイル等の場所を調べれると考えているのです。 ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

そもそも、 >新の書き込みファイルを検索できれば、ログファイル等の場所を は、言葉は適切ではないが、本末転倒でしょう。 アプリや、サービスのログなら、それぞれのマニュアルやリソースキッドなどを見れば記載されているし、設定ファイルに記載されています。 OSが標準で書き込み先を用意してあるが、そのような場所へは、標準で付属しているデーモンやアプリなどが書き込みしていることが多い。/var の配下がUNIXからの書き込み先。 また、多くは「 .log」等の拡張子が、Linux上のアプリでもついている物だ(バイナリーだと、.dat とか別種類のフォーマットである場合が多い)。 本題です。 UNIXの時代から、 find と言うコマンドが存在します。 http://www.zontheworld.com/linux/find.html などのリファレンスサイトをみればわかるかと。実際にはコマンドラインで man で確かめてください。 -mtime 、 -mmin などのオプションを使えば達成する。もちろんGUIツールでやっても同じ結果になると思うが。 注意事項としては、ルートから検索するのは愚の骨頂だ(UNIX系なので、ルートにファイル等を作成する馬鹿はいないと思うが<=いやたまにいるんだよなあ)。そうとうパフォーマンスを落とす。 コマンドラインからだと、バックグランドで実行する事だ。 ログファイルなので、ファイルだけを検索するよう指定しよう。または表示するようにする。 他には http://search.yahoo.co.jp/search?p=%22CentOS%22+%22%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%A4%9C%E7%B4%A2%22&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt をみれば、わかるはず 「一般にunixで利用されるファイル検索コマンド”find”は強力だが動作が遅い.」 なんて、こめんともあるが、その通りだ。ただちょっと御幣がある。動作が遅いのではなく、マシンのパフォーマンスが劣化するのだ。コマンドは、アセンブラで書かれている、高速で軽快な物だ。 しかし、インデックス等を利用しないので、すべてをスキャンしてしまう。何せ古いコマンドなもんで。20世紀の遺物と呼んでもいいかもしれない。 なので http://search.yahoo.co.jp/search?p=%22CentOS%22+%22%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E4%BD%9C%E6%88%90%22&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt なんて検索すると面白いかもしれない。Windowsだと Windows Searchです。このサービスが作るインデックスをエクスプローラーで検索すると利用される。 それを自作する事になる。 と言うことで、そんな苦労するより、マニュアル、設定ファイル見たほうがよっぽど早くたどりつくんですけどね。 まず、OSから調べた方がいいでしょう。それから、デーモン、ベンダーのアプリ等(Aparcheなど)。

ShiftTail
質問者

お礼

findコマンドですか。 教えて頂いたリンク等を参考に、挑戦してみたいと思います。 ご教授ありがとうございました。

その他の回答 (3)

  • Toshi0230
  • ベストアンサー率51% (836/1635)
回答No.4

私もアプローチ方法が違う、という意見に一票。 なんでかというと、「最新の更新ファイルが、求めているファイルであるという保証がない」ので。 ログファイルやpidファイルなどは、勝手な場所に作成されることはありません。 設定ファイルや起動時のオプションで指定された場所(指定がなければデフォルトの場所)に作成されますので、設定ファイルやマニュアルを見る方が早いです。

ShiftTail
質問者

お礼

pidファイル限定というわけではなく、例で挙げさせていただきました。 もし最新書き込みファイルが探せるのであれば、 色々と便利だと思ったのです。 情報ありがとうございました。

  • wormhole
  • ベストアンサー率28% (1621/5656)
回答No.3

#1の方のいわれるとおりfindでできますけど、findはアセンブラで書かれてるわけじゃありませんので。Cソースをコンパイルしてるものだからネイティブアプリケーションではありますけど。

ShiftTail
質問者

お礼

アプリケーションであるのですね。 探してみることにします。 情報ありがとうございました。

回答No.2

No1ですが、locateの説明を省いてしまった。 http://x68000.q-e-d.net/~68user/unix/pickup?locate をみれば、一目瞭然。まあ、目的が目的だけに、DBの更新がいつかと言う、インデックスの作成より、ややっこしかもしれない。

関連するQ&A

  • パッケージを確認するコマンドについて

    CentOSでは下記のコマンドでパッケージがインストールされているかを確認しています。 rpm -qa | grep パッケージ名 Ubuntuで上記のコマンドで該当するコマンドは何でしょうか? 下記のコマンドでいいのでしょうか? sudo apt-file search パッケージ名 私なりに調べたんですが自信がありません。 コマンドはあっていますでしょうか? 申し訳ありませんがCentOS、Ubuntuのコマンドをそれぞれ教えていただけませんでしょうか。 宜しくお願いします。

  • Linuxのバイナリファイル参照方法

    * 困っています 以下の3つのログイン情報ファイルを別ディレクトリにログとして保存しています。 1./var/log/wtmp 2./var/log/lastlog 3./var/run/utmp 上記のログを直接出力するには 1.lastコマンド 2.lastlogコマンド 3.whoコマンド を実行すればいいと思うのですが、別ディレクトリに保存しているファイルの 中身を見るにはどうすればよいのでしょうか。 「1」にかんしては「last -f <ファイル名>」で参照することができましたが、 「2」「3」の参照方法がわからないため、教えてください。 よろしくお願いします。

  • RedHat Linux Enterprise ES(ver3)のパッケージを最新化したい

    現在、RedHat Linux Enterprise ES(ver3)のインストールが完了した状態です。 インストール時に入れたパッケージを全て最新化したいのですが、これは手動でrpmを全てダウンロードし、インストールしていく必要があるのでしょうか。 CentOSみたく、yumコマンドで一括アップデートする事はできないのでしょうか。

  • linuxにおけるapacheなどのアプリケーションのインストール方法

    初心者丸出しでまったくみっともないのですがFedora Coreを使用しサーバーを立てたいと思っております。  しかし,アパッチやJAVAなど必要ツールのインストール方法(扱い方?コマンド?)がわかりません。<ファイル名>.rpmとかいうのはどうやってインストールするのでしょうか?  本を買ってもそんな馬鹿なことかいてませんで非常に困っています。助けてください。よろしくお願いします。

  • ApacheMySQLPHPについてRPMアップデートしたいがRPMアップデートの仕様がわからない

    お世話様です。 VPSを利用しています。 現在、CentOS4.4、Apache2.0.52、MySQL4.1.20、PHP4.3.9が入っています。 PHP4のサポートが近々打ち切られることもあり、PHPを最新にし、 ついでに、ApacheとMySQLも最新にしようとおもっております。 ですが、FreeBSDのportsからアプリをインストールしたりアップグレードした経験はあるのですが、 rpmでの経験はございません。 そこで、上記を実現させるための手順を教えていただけますでしょうか? なお、各configureオプションは原則そのまま引き継ぎ、さらに他のオプションもつけたいと思っています。 //------------------------------------------------ http://mirror.centos.org/centos/4/centosplus/i386/RPMS/ をみたところ、 Apacheは httpd-2.0.59-1.el4s1.8.el4.centos.i386.rpm MySqlは、 mysql-5.0.48-1.el4.centos.i386.rpm PHPは、 (1) php-5.1.6-1.2.1.centos.i386.rpm または、 (2)php-5.1.6-3.el4s1.8.i386.rpm & php-cli-5.1.6-3.el4s1.8.i386.rpm が最新と思いましたがあってますでしょうか? 「(1)、(2)のどちらが正しいでしょうか?」 //php-5.1.6-3.el4s1.8.i386.rpmは、centosの文字が入っていないので最新ではないのでしょうか? //また、質問させてください。 ●バージョン番号に含まれる「el4s1.8.el4」はどういう意味なのでしょうか? ●rpmでのアップグレードの場合は、 # rpm -Uvh *************.rpm であってますでしょうか? また、この場合configureオプションは引き継がれるのでしょうか? ●引き継がれるとしたら、configureオプションの関係で、 php-gd-5.1.6-3.el4s1.8.i386.rpm など他のrpmも入れる必要があるのでしょうか? その場合、5.1.6-3というバージョンも合致していないといけないのでしょうか? (でもcentosの文字が入っていなくてもかまわないのでしょうか?) ●php-mhash-5.1.6-1.el4.centos.i386.rpm は微妙にバージョンが違いますが、問題ないでしょうか? ●ApacheMySQLPHPについて、他に入れなければならないrpmがあったらファイル名で教えていただけますでしょうか? ●php5からの新機能のsoapなどを使いたいのですが、 そうすると、どのように対応すればいいのでしょうか? (configureオプションが違ってきてしまうと思いましたため) 以上、恐縮ですが、よろしくお願い申し上げます。

  • ログファイルを後ろから検索し、最初のマッチで止める

    CentOS 5 を使っています。 とある巨大なログファイルがあります。 例えば grep hoge log.txt | tail -1 みたいな事をやっているのですが、これをどうにか高速にできないですかね? 上記だと、ログファイルを全検索しているので効率が悪いです。 (ログファイルはファイルの最後の方に新しい情報が記録されているので、その最新ログが見たいのです) 安易に思いつくのは tac コマンドを使って tac log.txt | grep hoge | head -1 でもいいんですが、grep で「最初のマッチで終了」してくれるオプションもなさそうです。 何か良い方法があればご教示願います。 (ruby 等でスクリプトを書いても良いのですが、何とかワンライナーで出来ないかなと) P.S ちなみに実際の見たい情報は「grep でマッチした前後数行」なので -A や -B オプションを使っています。

  • LINUXの実行ファイル

    最近CentosなんかのLinuxをいじっているのですが viでviエディターが起動します。 calでカレンダーが起動します。 windowsは電卓はCalc.exeのexeが実行ファイルになっており、Autoexec.batなどはバッチファイルとして実行されます。 cdやdirはCommand.comの内部コマンドだったりします。 (1)Linuxはこの辺どうなっているのでしょう?? (2)昔はyumってなかったような気がしますが、パッケージ?を管理するものなのでしょうか?それもどのあたりまで? Debian系では使えないのでしょうか? (2)はいいとして(いやよくないけど)(1)だけでも教えてください。

  • Linux Apache Mysql PHP

    LAMPを稼働させたいと思っています。 すべてのアプリケーションを常に最新に保ちたいと思っているのですが、CentOSのyumは更新が遅く、本家サイトからrpmなりをダウンロードして更新しなくてはならないと、ちょっと手間に感じます(yumコマンドでのインストールはとても楽なので・・・)。 手っ取り早く上記OSやアプリケーションを更新するには、どうすべきなのでしょうか? 当方はCentOSしか使ったことがないのですが、Fedoraなどのディストリビューションのほうが楽といったことはありえるのでしょうか?

  • RPMパッケージに含まれるファイルが見つからない

    こんにちは。 いきなりですが、 ファイルが消失しているパッケージだけ再インストールすることはできないのでしょうか。 なぜそのようなことをしたいのかと言うと、 先週ごろからyumでRPMパッケージを新しくインストールする時、たまにですが error: ~ scriptlet failed, exit status 1 のようなエラーが出ていました。 しかしインストールも(多分)成功していたようなのでほっといておきました。 しかし一昨日の夜ごろにシャットダウンさせようと sudo /sbin/init 0 としたところ/sbin/initがないと言われてしまったので、rpm -qf /sbin/initしてパッケージを調べた後インストールして、無事シャットダウンすることができました。 しかし、今日起動する際に /etc/rc.d/rc.sysinit: line 648: fsck: command not found と言われてしまい、どうやら色んなコマンドが無くなっているようだということにやっと気付きました。 バックアップは取っておいたのでそこから/sbinに無いコマンドだけ移すと、無事起動できました。 現状、エラーもなく稼働しているのでこのままでもいいのですが、 ファイルが無くなったままだと気持ち悪いので、冒頭のように一部のファイルが消失しているパッケージだけを再インストールすることができないのかと思いました。 OSはCentOS 5です。 よろしくお願いします。

  • rpmファイルはそのままダウンロードできない?

    linux向けのrpmファイルについて質問です。 「rpmファイルの中身を展開できないか?」と言う質問はよくありますが rpmファイルそのものの入手はどこからすれば良いのでしょうか? linux環境でインストールしたいパッケージがあり、それをrpmコマンドで インストールしようと考えているのですが、肝心のrpmファイルそのもの がネットからダウンロード出来るところが無さそうです。 rpmファイルをダウンロードできる事を唄っているサイトはありますが それでダウンロードするとcpio形式のファイルになってしまいます。 cpio形式のファイルだとコマンドレベルのインストールからやらなけれ ばならず、手間がかかるのでrpmファイルの固まりが欲しいのですが。。。 rpmファイルの入手って出来ないものなのでしょうか?