Le Shell Shell ci-dessus suggéré par statox est bien sûr correct, mais il ne tient pas compte du fait que l'ordinateur peut tomber en panne entre les deux vérifications, ou que vous pouvez vous déconnecter, ou que vous pouvez interrompre la session ssh à partir de laquelle vous exécutez le Shell.
Le moyen le plus simple de se prémunir contre tous ces événements simultanément est d'utiliser la fonction à l'adresse d'exécuter en avant dans le temps le deuxième contrôle. Je suggère donc que le script ci-dessus soit modifié comme suit :
#!/bin/bash
FILE=/home/Savio/Dsktop/check/sample.txt
if [ -f $FILE ]
then
#Do what you want if file exists
else
at now + 5 hours /home/Savio/ExecutableScript
fi
où /home/Savio/ExecutableScript est un script exécutable (*chmod 755 ExecutableScript) qui vérifie l'exitence du fichier échantillon.txt et, s'il n'existe pas, prend les mesures appropriées sachant que le délai de 5 heures a déjà expiré.
Je comprends que la plupart des gens ne sont pas familiers avec le à présent + 5 heures format de à l'adresse l'invocation, vous pouvez le trouver détaillé aquí .
Les éléments ci-dessus survivront aux redémarrages, aux déconnexions et aux déconnexions.
EDIT : le à l'adresse est particulièrement utile car elle utilise votre environnement, pas de la racine . N'oubliez pas non plus que à l'adresse utilise le standard Bourne Shell. sh et non le Bourne-again Shell. bash . Ainsi, dans le she-bang du fichier /home/Savio/ExecutableScript, assurez-vous de spécifier le bash Shell explicitement, pour qu'il fonctionne comme vous l'attendez.