J'ai 2 scripts l'un est software.sh
et l'autre timer.sh
tous deux sont exécutés dans des terminaux séparés. Je veux l'instruction if qui vérifie la durée d'exécution du logiciel à vérifier en permanence, mais apparemment il n'est vérifié une fois au début de l'exécution :(Continous Si instruction
C'est le timer.sh
qui obtient le PID software.sh
et compte son temps de fonctionnement
#!/bin/bash
while ((1)); do
PID_Ardu=$(pidof arducopter)
Time= ps -p $PID_Ardu -oetime= | tr '-' ':' | awk -F: '{ total=0; m=1; } { for (i=0; i < NF; i++) {total += $(NF-i)*m; m *= i >= 2 ? 24 : 60 }} {print total}'
if [[ $Time < 20 ]]; then **#THIS SHOULD BE EXECUTED CONTINOUSLY**
echo $Time
else
echo INSIDE
ps -ef | grep software| grep -v grep | awk '{print $2}' | xargs kill
fi
done
C'est software.sh
qui exécute différents fichiers générés
#!/bin/bash
chmod a+x *.exp
./ACCF01.exp | wait |echo "FINISHED SCRIPT 1" #Run the ACCF01 script
sed -i '/ACCF01.exp/d' ./software.sh #Delete previous line after finishing execution.
./ACCF02.exp | wait |echo "FINISHED SCRIPT 2"
sed -i '/ACCF02.exp/d' ./software.sh
./ACCF03.exp | wait |echo "FINISHED SCRIPT 3"
sed -i '/ACCF03.exp/d' ./software.sh
./ACCF04.exp | wait |echo "FINISHED SCRIPT 4"
Exécutez-le avec 'bash -x timer.sh' ou insérez' set -x', il affichera les commandes qu'il exécute. – eckes
Pas de chance :(J'ai aussi essayé d'exécuter le script lui-même à l'intérieur de l'instruction if pour s'assurer qu'il s'exécute en continu mais toujours ... l'instruction if ne s'exécute qu'au début –
Que voulez-vous dire sans chance? donc nous pouvons l'analyser, s'il vous plait – eckes