Эта функция занимает огромное количество времени, чтобы вычислить состояние процесса, поскольку каждый раз, когда ему требуется ssh войти в машину, необходимо найти состояние процесса.
У меня всего четыре машины и около 50+ процесс для мониторинга и детали упомянуты в configDaemonDetails.txt
как:
abc@sn123|Daemon_1|processname_1
abc@sn123|Daemon_2|processname_2
efg@sn321|Daemon_3|processname_3
Как сократить время, выполняя ssh один раз на машине и находя весь его процессинформация, как определено в текстовом файле.?
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 "-----------------------------------------------------"
}
Спасибо :)