0

複数のボックス/マシンでコアファイルを検索し、コアファイルの生成に関する電子メールをトリガーする必要があります。

単一のマシンまたは複数のマシンでコアを見つけるのに役立つユーティリティはありますか?非常に一般的なシナリオであるため、コアファイルを見つけるためのユーティリティが必要だと思います。

以下の入力の後、コアファイルを見つけてコアファイルが存在する場合はメールをトリガーするperlスクリプトを書くことができます

このスクリプトはローカルマシンで正常に機能しますが、すべての本番サーバーを追加する必要があります。誰かが私にPerlスクリプトを介してLinuxターミナルに接続するためのアイデアを提供してくれますか?

現在、開発マシンに集中しているため、このスクリプトはすべての開発マシンにログインしてコアファイルを見つけることができます。

4

3 に答える 3

0

それをメールスクリプトに実装します。

find / -name core

または、cronjobを実行して、すべてのパスをログに出力します。もちろん、findコマンドの「/」を特定のパスに変更することもできます

于 2012-07-05T07:57:18.603 に答える
0

シェルスクリプトはあなたの質問のためのより良いオプションになります。私はシェルスクリプトに慣れていませんが、それを定式化しようとしました。

#list of server to be monitored for core file
serverList="root@server1 root@server2 root@server50"

for server in $serverList
do
    #core file
    log="/tmp/coreFiles.log"

    ssh $server find / -type f -name core >$log

    if [ -s $log] then
       echo "core files for server $server" | mail -s "Core files found" xyz@abc.com < $log
    fi      

done
于 2012-07-05T08:55:10.570 に答える
0

昔ながらの方法は、ファイルシステム全体でコアファイルを定期的に検索することです。

find / -type f -name core

また

find / -type f -name 'core.*'

これには、当然、ユーザーファイルを(かなり不幸な)名前と一致させるリスクがありますcore

幸いなことに、最近のLinuxシステムは多少構成可能です。このファイルを使用して/proc/sys/kernel/core_pattern、コアファイルが配置される特定のディレクトリと、ファイル名の形式を設定できます。プログラムの名前、プログラムが起動されたUIDとGIDなどを含むコアファイル名を設定できます。このマニュアルページを参照してください。

このようにして、すべてのコアファイルを単一のディレクトリに保持できます。これにはいくつかの利点があります。

  • コアファイルがファイルシステム全体に散らばるリスクはありません。

  • ファイルシステム全体を検索する計算コストをかけずに、またユーザーファイルを削除するリスクなしに、すべてのコアファイルを簡単に削除できます。

  • すべてのコアファイルが1つの場所にあるため、必要に応じて新しいファイルをポーリングする方がはるかに合理的です。

  • すぐに対応したい場合は、コアファイルディレクトリの監視にinotifywait基づくまたは他のツールを使用して、ポーリングを回避できます。inotify

于 2012-07-05T09:51:34.943 に答える