Existe-t-il une commande Unix (semi-) standard qui dormirait jusqu'à l'heure spécifiée sur sa ligne de commande? En d'autres termes, je recherche quelque chose de similaire sleep
qui prendrait du temps de réveil plutôt que de la durée.
Par exemple: sleeptill 05:00:00
Je peux coder quelque chose, mais je préfère ne pas réinventer la roue s'il y a déjà quelque chose.
Question bonus: ce serait génial si cela pouvait prendre le fuseau horaire (comme dans sleeptill 05:00:00 America/New_York
).
modifier En raison de la nature de ce que je fais, je recherche une solution "dormir jusqu'à T" plutôt que "exécuter la commande à T".
edit Pour éviter tout doute, si j'exécute la commande à 18h00 et lui dis de se réveiller à 17h00, je m'attends à ce qu'elle reste en veille pendant 23 heures (ou, dans certains cas, dans le cas de l'heure d'été, pendant 22 ou 24 heures.)
cron
, je suppose.sleep
semblable.Réponses:
Si vous utilisez un Unix doté d'une commande de date décente et que vous utilisez bash, vous pouvez utiliser le format% s pour calculer l'heure.
(1700 étant 5PM et -j indiquant la date pour ne pas réellement régler la date)
la source
-j
pour-d
le faire fonctionner sur mes systèmes Linux.]date -d 'tomorrow 17:00'
.echo $(( ($(date -d "3:00" +%s) - $(date +%s) + (60*60*24)) % (60*60*24) ))
(il pourrait y avoir seulement quelques problèmes autour des changements d'heure d'été)Qu'en est-il de cela (en combinant les idées de w00t et de Gille dans une fonction)?
Usage:
la source
Découvrez la
at
commande linux / unix . En utilisant l'exemple 5AM:at 05:00 some_command
Il prend également en charge les fuseaux horaires:
la source
cron
ouat
, mais ce serait pénible à gérer. C'est la raison pour laquelle je recherche quelque chose desleep
semblable. Pour l'instant, j'ai écrit le mien.