Je veux vérifier si un répertoire contient un fichier (par exemple sample.txt). S'il ne contient pas ce fichier dans 5 heures, il faudrait que je fasse quelque chose. Comment puis-je faire cela dans un script?
J'ai essayé ceci:
if=$(find /home/Savio/Dsktop/check -type f -Sample.txt "*.txt") )
Quelles seront les commandes que je dois utiliser?
sleep 5h; yourcommand
.Réponses:
Le script 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, vous pouvez vous déconnecter ou interrompre la session ssh à partir de laquelle vous exécutez le programme. scénario.
Le moyen le plus simple de s’assurer simultanément de tous ces événements est d’utiliser le à commande pour exécuter en avant la deuxième vérification. Ainsi, je suggère que le script ci-dessus soit modifié comme suit:
où / home / Savio / ExecutableScript est un script exécutable (* chmod 755 Executable Script) qui vérifie l'existence du fichier sample.txt et, s’il n’existe pas, prend les mesures appropriées en sachant que le laps de temps de 5h est déjà écoulé.
Je comprends que la plupart des gens ne connaissent pas le à l'heure actuelle + 5 heures format de à invocation, vous pouvez le trouver détaillé ici .
Ce qui précède survivra aux redémarrages, aux déconnexions et aux déconnexions.
EDIT: le à Cette commande est particulièrement utile car elle utilise votre environnement, pas les racines . Aussi, gardez à l'esprit que à utilise le shell standard Bourne sh , pas le shell Bourne-again frapper . Ainsi, dans le she-bang du fichier / home / Savio / ExecutableScript, assurez-vous de spécifier explicitement le shell bash pour qu'il fonctionne comme vous le souhaitez.
la source
Vous pourriez utiliser quelque chose comme ça
La variable
$FILE
contient le chemin du fichier que vous recherchez, il peut être modifié pour rechercher d'autres fichiers.Le test
if [ ! -f $FILE ]
Utilisez le-f
paramètre qui est "Test si le fichier existe".Et le délai dont vous avez besoin est mis en œuvre avec
sleep 5h
. Sleep permet de mettre en pause un script. Si vous ne fournissez pas de suffixe après le nombre, le temps est interprété en secondes mais vous pouvez également utiliser les suffixes.s
,m
,h
etd
pour définir le temps en secondes, minutes, heures ou jours.MODIFIER : Le problème de cette méthode est qu’elle ne survivra pas à un redémarrage ou à une déconnexion. Voir la réponse de @MariusMatutiae pour une solution plus robuste.
la source
at now
C'est plutôt cool, je ne le savais pas. OP devrait accepter cette réponse.