您好,登錄后才能下訂單哦!
在重慶萬州進行設備巡檢時,發現CCS01A(HP UNIX B.11.31)服務器終端窗口頻繁彈出報錯,查看dmesg輸出信息和OLDsyslog.log全是該報錯以及/var分區滿了的信息,但是syslog.log在很久之前就沒有再被寫入內容,是空文件。
# 終端窗口頻繁出現的報錯信息
esmd: System Error: The EVM daemon has failed and cannot be restarted
重啟syslogd服務后解決,esmd: System Error: The EVM daemon has failed and cannot be restarted等相關報錯信息開始寫入日志文件。
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
首先,在網上查找到的解決辦法是:
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服務后服務器也可以立刻將其自動啟動。至此該錯誤成功解決。
關于命令解釋器的路徑問題:
在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.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。