该函数花费大量的时间来计算进程的状态,比如每次必须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