Quelle est la Meilleure Façon d'Effectuer la Comparaison de Timestamp dans Bash
J'ai une alerte d'un script que je suis en train d'essayer de garder de spamming moi aussi j'aimerais placer une condition que si une alerte a été envoyée dans, dire la dernière heure, afin de ne pas envoyer une autre alerte. Maintenant, j'ai une tâche cron qui vérifie l'état de chaque minute parce que j'ai besoin d'être alerté rapidement lorsque la condition est remplie, mais je n'ai pas besoin d'obtenir l'e-mail chaque munite jusqu'à ce que je le problème sous contrôle. Quelle est la meilleure façon de comparer les temps de bash pour accomplir cette?
Vous devez vous connecter pour publier un commentaire.
De loin le plus simple est de stocker l'heure timbres comme des moments de modification de fichiers factices. GNU
touch
etdate
les commandes set/get ces temps et d'effectuer des calculs de date. Bash a des tests pour vérifier si un fichier est plus récent que (-nt
) ou de plus de (-ot
) pour l'autre.Par exemple, pour envoyer une notification si la dernière notification a été plus d'une heure: il y a
-nt
est une extension POSIX: pubs.opengroup.org/onlinepubs/009695399/utilities/test.htmlUtiliser "test":
EDIT: Si vous voulez savoir quand un événement s'est produit, vous pouvez utiliser le bouton "contact" pour créer un fichier que vous pouvez ensuite les comparer à l'aide de "test".
Utilisation de la date de commande pour convertir le deux fois dans un format standard, et de soustraire eux. Vous voudrez probablement stocker de l'exécution précédente de temps dans un dotfile puis faire quelque chose comme:
(Merci, Steve.)
$()
sur votre appel de ce jour.