該函數花費大量的時間來計算進程的狀態,比如每次必須ssh進入機器並查找進程的狀態。通過減少ssh的數量來提高代碼的執行效率
我只有四臺機器和周圍50多個進程,以監督和細節被提及到configDaemonDetails.txt
,如:
[email protected]|Daemon_1|processname_1
[email protected]|Daemon_2|processname_2
[email protected]|Daemon_3|processname_3
如何降低時間做一次SSH成機器並查找txt文件中定義的所有進程信息。 ?
CheckProcessStatus()
{
echo " ***** Checking Process Status ***** "
echo "========================================================="
IFS='|'
cat configDaemonDetails.txt | grep -v "^#" | while read MachineDetail Daemon ProcessName
do
Status=`ssh -f -T ${MachineDetail} ps -ef | egrep -v "grep|less|vi|more" | grep "$ProcessName"`
RunTime=`echo "$Status" | sed -e 1'p' -e '1,$d' | awk '{print $5" "$6}'`
if [ -z "$Status" ]
then
echo "The Process is DOWN $Daemon | $ProcessName "
else
echo "The Process $Daemon | $ProcessName is up since $RunTime"
fi
done
echo "-----------------------------------------------------"
}
謝謝:)
如何提供文件中的所有進程名稱到ps -ef? – Joice 2010-07-13 11:14:21
不要一次提供全部。從遠程計算機上獲取ps -ef的ENTIRE輸出,並在本地計算機上處理它。或者如果這太多,如果所有特效都在同一個帳戶下運行,則可以執行ps -uf {用戶名}。 – MJB 2010-07-13 11:17:08
好的我知道了..非常感謝 – Joice 2010-07-13 11:20:17