在多台机器中查找核心文件

时间:2012-07-05 06:41:11

标签: linux perl admin perl-module administration

我需要在多个盒子/机器中找到核心文件并触发有关核心文件生成的电子邮件。

我们是否有任何实用程序可以帮助我们在单台机器或多台机器中找到核心。 我相信我们应该有任何实用工具来查找核心文件,因为它是非常通用的场景。

在以下输入之后,我能够编写一个perl脚本来查找核心文件,并在存在任何核心文件的情况下触发邮件

此脚本适用于本地计算机,但我需要添加所有生产服务器。有没有人也通过Perl脚本提供连接linux终端的任何想法。

截至目前,我们专注于开发机器所以这个脚本可以登录到所有开发机器并找到核心文件。

3 个答案:

答案 0 :(得分:0)

将其实施到您的电子邮件脚本中:

find / -name core

或者只是cronjob它输出到日志的所有路径。 当然,您也可以使用特定路径更改find​​命令中的“/”

答案 1 :(得分:0)

Shell脚本将为您的问题提供更好的选择。我不习惯使用shell脚本,但我试图制定它。

#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

答案 2 :(得分:0)

老式的方法是定期在整个文件系统中搜索核心文件:

find / -type f -name core

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

这自然会冒着将用户文件与(相当不幸的)名称core进行匹配的风险。

幸运的是,现代Linux系统更具可配置性。您可以使用/proc/sys/kernel/core_pattern文件来设置将放置核心文件的特定目录,以及文件名称的格式。您可以拥有核心文件名,其中包含程序名称,启动它的UID和GID等等 - 请查看this manual page

这样,您可以将所有核心文件保存在一个目录中,这有几个优点:

  • 您不会冒险在整个文件系统中散布核心文件。

  • 您可以轻松删除所有核心文件,而无需在整个文件系统中进行搜索,也不会有删除用户文件的风险。

  • 由于所有核心文件都在一个地方,因此根据需要轮询新文件更为合理。

  • 如果您想立即采取行动,可以使用inotifywait或基于inotify的其他工具来监控核心文件目录,从而避免轮询。