comment utiliser le script shell vérifiant l'heure de la dernière modification d'un fichier

StackOverflow https://stackoverflow.com/questions/1207052

  •  05-07-2019
  •  | 
  •  

Question

Je veux savoir si certains fichiers ont été modifiés au cours des trois dernières minutes afin de décider si la cp réussite a été effectuée et si je devrais exit ou continuer le script. Comment puis-je faire cela?

Merci

Était-ce utile?

La solution

Vous pouvez obtenir la dernière heure de modification d'un fichier avec stat et la date du jour avec date. Vous pouvez utiliser des chaînes de format pour les obtenir toutes les deux en & "Secondes depuis l’époque &" ;:

.
current=`date +%s`
last_modified=`stat -c "%Y" $file`

Ensuite, il est assez facile de mettre cela dans une condition. Par exemple:

if [ $(($current-$last_modified)) -gt 180 ]; then 
     echo "old"; 
else 
     echo "new"; 
fi

Autres conseils

La syntaxe de cette instruction if dépend de votre shell, mais pas les commandes de date. J'utilise bash; modifiez si nécessaire.

if [ $(( $(date +%s) - $(date +%s -r <file>) )) -le 180 ]; then
    # was modified in last three minutes
else
    # was not modified in last three minutes
fi

Le +%s indique à la date de sortie une heure UNIX (le bit important, c’est qu’il s’agit d’un entier en secondes). Vous pouvez également utiliser stat pour obtenir ces informations - la commande stat -c %Y <file> est équivalente. Veillez à utiliser %Y pas %y pour obtenir un temps utilisable en secondes.

La commande stat vous donnera la dernière heure de modification

stat -c %y <filename>

Rechercher peut générer le nom du fichier s’il a été modifié au cours des 3 dernières minutes.

find file1 -maxdepth 0 -mmin -3

Un changement d'horodatage de fichier n'implique pas vraiment que vous avez été copié avec succès.
Si vous arrivez à corrompre le fichier ou si le système de fichiers manque d'espace,
vous verrez probablement toujours un changement d’horodatage (vous devez le confirmer).

Je ne comprends pas le contexte exact de vos besoins.
Si vous déclenchez un cp, il se termine et retourne - il ne retourne pas tant qu'il fonctionne.
Ainsi, le retour (avec le code de sortie de succès) n'est-il pas un bon indicateur de succès?

Comment et pourquoi quitterait-il en partie au sein d'une <=> opération?
Ou est-ce un script batch <=> qui parcourt la liste des fichiers ...
des précisions aideraient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top