HP-UX系统频繁报错问题排查

1.错误信息描述

在重庆万州进行设备巡检时,发现CCS01A(HP UNIX B.11.31)服务器终端窗口频繁弹出报错,查看dmesg输出信息和OLDsyslog.log全是该报错以及/var分区满了的信息,但是syslog.log在很久之前就没有再被写入内容,是空文件。

# 终端窗口频繁出现的报错信息
esmd: System Error: The EVM daemon has failed and cannot be restarted

2.syslog.log为空文件的问题解决办法

重启syslogd服务后解决,esmd: System Error: The EVM daemon has failed and cannot be restarted等相关报错信息开始写入日志文件。

3.evm daemon频繁报错解决办法

Event Management ( EVM )

在正常的服务器上执行命令:

ps -ef | grep evm*

可以得到以下结果,但是CCS01A(报错服务器)上没有任何关于evm的进程:

手动执行命令启动evmd进程:

/usr/sbin/evmd

再次查看CCS01A上该进程已经存在,服务器不再报错。

但是类似正常服务器的evmlogger 和 evmchmgr 相关进程并没有启动,按照正常服务器进程显示的命令手动执行evmlogger 和 evmchmgr相关命令,服务器报错:

interpreter "/bin/sh" not found

和正常的服务器进行对比发现:正常的服务器上存在:/bin -> /usr/bin 的软链接,而CCS01A上没有,因此在CCS01A上新建软链接,并修改其属主和属组:

ln -s /usr/bin /bin
chown -h bin:bin /bin

修改后,CCS01A evm相关服务正常启动,关闭evmd服务后服务器也可以立刻将其自动启动。

建议手动的开启关闭evmd服务的方法是(==其实正常情况下该服务只要被关闭就会立刻自动启动==):

evmstop
evmstart
也可以:
/sbin/init.d/evm stop
/sbin/init.d/evm start

4.纠结的排错过程记录

首先,在网上查找到的解决办法是:

if you have same issue you can try to  Copy evmstart and evmstop scripts from the good host. Then the issue is solved.

也就是说在将正常的服务器的evmstart和evmstop文件拷贝到报错的服务器上即可,可以使用如下命令查找这两个文件:

find / -name evmstart
find / -name evmstop

首先将CCS01A服务器的原文件进行备份,然后将正常的文件拷贝至CCS01A,注意修改文件的属主属组和权限。

但是我发现拷贝正确的文件后CCS01A仍然会报错,于是在正常的服务器上查看evm相关的进程:

ps -ef | grep evm*

发现正常服务器上有进程:/usr/sbin/evmd 进程,而CCS01A上没有,于是在CCS01A上将该进程开启,执行命令:

/usr/sbin/evmd

再次查看CCS01A上该进程已经存在,服务器不再报错,然后搜索了evmd服务的开启及关闭方法,如下:

# HP UNIX 重启evmd服务的方法:
# 方法一:
?/sbin/init.d/evm stop
?/sbin/init.d/evm start
# 方法二(方法一应该是是正规做法):
?杀死evmd进程 kill -9 PID
?执行命令/usr/sbin/evmd
# 方法三(该方法是从/sbin/init.d/evm脚本中看到的):
?evmstop
?evmstart

本以为这样就彻底解决了问题,心血来潮决定重启一下evmd 服务试试,结果再次频繁发生报错,并且使用/sbin/init.d/evm start命令无法启动evmd服务,重启过程见下图:

于是查看/sbin/init.d/evm 文件,发现该脚本建议使用evmstart 和evmstop 来手动开启关闭evmd服务,并且该脚本也是调用的这两个命令,于是执行evmstart 来开启evmd服务,结果还是报错:

报错中提示/bin/sh 找不到,查看evmstart 脚本,发现其开头指定的命令解释器为:#!/bin/sh.在终端窗口执行命令: which sh 得出的结果却是:/usr/bin/sh,其他正常的服务器都是:/bin/sh

这里开始主观的认为正常的服务器sh命令是在/bin/sh目录下,而报错的CCS01A则由于未知原因导致sh在/usr/bin目录下

于是把/usr/sbin目录下evm*相关的脚本开头的命令解释器都修改为:#!/usr/bin/sh,再次执行evmstart 后,evmd服务正常启动,对其进行重启:

evmstop
evmstart
或者
/sbin/init.d/evm stop
/sbin/init.d/evm start

系统不再报错,其实关闭该服务后,系统会很快自动将其开启,无需手动开启evmd服务。见下图:

最后和正常的服务器进行对比,又发现CCS01A上关于evm的进程比较少,正常服务器进程如下:

于是按照正常服务器进程显示的命令手动执行evmlogger 和 evmchmgr相关命令,服务器报错:

interpreter "/bin/sh" not found

和正常的服务器进行对比发现:正常的服务器上存在:/bin -> /usr/bin 的软链接,而CCS01A上没有,因此在CCS01A上新建软链接,并修改其属主和属组:

# 新建软链接
ln -s /usr/bin /bin
chown -h bin:bin /bin

修改后,CCS01A evm相关服务正常启动,关闭evmd服务后服务器也可以立刻将其自动启动。至此该错误成功解决。

5.其他问题说明

关于命令解释器的路径问题:

在CCS01A终端窗口执行命令: which sh
得出的结果却是:/usr/bin/sh,其他正常的服务器都是:/bin/sh

可以用which命令显示系统命令路径的顺序来解释:

which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

在CCS01A创建完软链接后,只需要修改当前的PATH变量即可使其和其他服务器显示的路径一致:

PATH=/bin:$PATH

为避免有其他影响,本次未对CCS01A进行PATH变量修改。

在网上索搜到的另外一种解决办法如下,但是实验后并没有解决问题,现在也将这种方法列出,仅供参考:

Hello freinds,
Above mentioned problem is solved.
Problem was solved by this way - Ensure that there is softlink between / directory to the directory which contains evmstop and evmstop script files.
Command i used is
ln -s /usr/bin2 /
Thanks for your support.

原文地址:http://blog.51cto.com/zaa47/2122113

时间: 2024-08-17 01:15:54

HP-UX系统频繁报错问题排查的相关文章

64位系统下报错:cannot load OCI DLL,126

64位系统下报错:cannot load OCI DLL,126 解决方法:navicat 菜单中 -工具->选项->OCI 选择oracle安装目录下bin里面的oci.dll 查看上述链接页面提示,Navicat only support 32-bit instant client, 因此,尽管我们安装了64位的Oracle,但由于Navicat仅支持32位的,因此我们还需下载一个oracle的32位的客户端, 下载地址:http://www.oracle.com/technetwork/

华硕笔记本U盘启动系统/WinPE报错。Windows failed to start. A Recent hardware or software change might be the cause.

最近在整一台华硕笔记本,大概有5年寿命了吧,质量还行,由于系统出了问题,打算用自制U盘WinPE进去修复一下.按照个人经验,在主板设置里启用了USB启动选项,并且设置USB启动顺序为第一个,可是进系统居然报错,如下图所示. Windows failed to start. A Recent hardware or software change might be the cause. To fix the problem: 1. Insert your windows installation

Java:延迟功能的Robot在Lunix系统上会报错

Java:延迟功能的Robot在Lunix系统上会报错 关于延迟功能的Robot: 今天开发过程中发现,本机开发好的项目,部署到Lunix服务器竟然报错!查了代码发现: Robot r = new Robot(); //延时执行 r.delay(8000); 这个延迟函数,在Lunix上会报异常: 更改为: //延时执行 Thread.currentThread().sleep(8000);//毫秒 解决问题,Lunix上也是飞快的跑起来. 原文地址:https://www.cnblogs.co

win10安装ubuntu系统,报错WslRegisterDistribution failed with error: 0x8007019e

原文链接:https://blog.csdn.net/qq_33033367/article/details/82820983 在windows应用商店安装ubuntu系统,报错WslRegisterDistribution failed with error: 0x8007019e 1.报错: Installing, this may take a few minutes... Installation Failed! Error: 0x8007019e Press any key to co

Win8系统下报错:无法将字符串“*”转换为Length.

之前用WPF做的一个项目,一直测试被有问题,后来测试人员将项目在win8系统下测试,总是报错无法将字符串“*”转换为Length,而且将项目在VS里直接调试也无法定位错误,只能定位的某个类里,后来将类里的属性全部删除,还是回报此错误,突然醒悟,还有样式文件没有排错呢,经过测试发现样式的属性里用到了Height="*",就是这个语句导致的错误,很奇怪,在其他系统下都不会报错,单单在Win8下有错,有高手知道原因,还请不吝赐教!

release系统打包报错的解决过程

报错信息: INFO: Illegal access: this web application instance has been stopped already.  Could not load org.apache.commons.pool.impl.CursorableLinkedList$Cursor.  The eventual following stack trace is caused by an error thrown for debugging purposes as w

C#注册表访问程序Win7系统下报错 “不允许所请求的注册表访问权”

今天一个同事安装完系统的客户端程序后,给发来一个报错截图,如下: 这个是在软件登陆时,有一个保存系统用户名的设置保存到注册表里,一直用着都没问题,今天却报错了.一问才知道他用的win7系统,看来win7对注册表的修改做了一定的限制. 经过测试可以通过修改程序的兼容性及设置权限来解决.因为这个程序是ClickOnce程序,所以要找到这个程序也不容易,动用windows的搜索功能吧,程序安装完会在xxx这样类似的一个目录下,找到启动的主程序,点右键"属性",点"兼容性"

linutx系统服务器报错--磁盘空间不足

公司有一台配置很差的老服务器,应该使用的年份不少了,可能也不少于十年了吧.这段时间写入一个文件,文件不论大小都报错磁盘空间不足,如下: #df -h 文件系统             1K-块           已用            可用             已经%                    挂载点 /dev/hdd2          2063536    1919932      38780         99%                       / /d

eclipse 使用gradle构建系统时候报错

今天启动eclipse后,昨天运行正常的gradle项目报错,无法进行编译,错误信息如下: Unable to start the daemon process. This problem might be caused by incorrect configuration of the daemon. For example, an unrecognized jvm option is used. Please refer to the user guide chapter on the da