Cette fonction prend beaucoup de temps pour calculer l'état d'un processus, à chaque fois qu'il doit ssh dans la machine et trouver l'état d'un processus.Augmentez la performance du code en réduisant le nombre de ssh
Je n'ai quatre machines et autour de 50 processus de surveillance et les détails sont mentionnés dans configDaemonDetails.txt
comme:
[email protected]|Daemon_1|processname_1
[email protected]|Daemon_2|processname_2
[email protected]|Daemon_3|processname_3
Comment réduire le temps avec faire une fois ssh dans un machine et trouver toutes les informations de son processus tel que défini dans le fichier 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 "-----------------------------------------------------"
}
Merci :)
Comment puis-je fournir tous les noms de processus du fichier à ps -ef? – Joice
Ne les fournissez pas tous en même temps. Obtenez la sortie ENTIER de ps -ef sur la machine distante, et traitez tout cela sur votre machine locale. Ou si c'est trop, vous pouvez faire un ps -uf {username} si tous les procs s'exécutent sous le même compte. – MJB
ok ok je l'ai eu .. merci beaucoup – Joice