Comment configurer cron pour exécuter certaines commandes toutes les heures et demie?Comment configurer cron pour exécuter certaines commandes toutes les heures et demie?
Répondre
Y a-t-il une bonne raison pour laquelle vous ne pouvez pas utiliser 1 heure ou 2 heures? Ce serait plus simple à coup sûr.
Je ne l'ai pas essayé personnellement, mais vous pouvez trouver quelques informations ici sur l'obtention de cron pour exécuter toutes les 90 minutes: http://keithdevens.com/weblog/archive/2004/May/05/cron
Un excert à partir du lien ci-dessus:
0 0,3,6,9,12,15,18,21 * * * <commands>
30 1,4,7,10,13,16,19,22 * * * <commands>
Ce n'est pas possible avec une seule expression en normale cron
.
Le mieux que vous pouvez faire sans modifier le code est:
0 0,3,6,9,12,15,18,21 * * * [cmd]
30 1,4,7,10,13,16,19,22 * * * [cmd]
Ces pourraient être compressible, selon la version de Cron, vous devez:
0 */3 * * * [cmd]
30 1-23/3 * * * [cmd]
Deux lignes dans la crontab. Sur le modèle de:
0 0,3,6,9,12,15,18,21 * * * /usr/bin/foo
30 1,4,7,10,13,16,19,22 * * * /usr/bin/foo
Vous pouvez le faire avec deux entrées crontab.Chaque exécute toutes les trois heures et ils sont décalés de 90 minutes quelque chose comme ceci:
0 0,3,6,9,12,15,18,21 * * *
30 1,4,7, 10,13,16,19,22 * * *
Vous pouvez également utiliser fcron qui accepte également les spécifications de temps plus complexes tels que:
@ 01h30 my_cmd
#! /bin/sh
# Minute Cron
# Usage: cron-min start
# Copyright 2014 by Marc Perkel
# docs at http://wiki.junkemailfilter.com/index.php/How_to_run_a_Linux_script_every_few_seconds_under_cron"
# Free to use with attribution
# Run this script under Cron once a minute
basedir=/etc/cron-min
if [ $# -gt 0 ]
then
echo
echo "cron-min by Marc Perkel"
echo
echo "This program is used to run all programs in a directory in parallel every X minutes."
echo
echo "Usage: cron-min"
echo
echo "The scheduling is done by creating directories with the number of minutes as part of the"
echo "directory name. The minutes do not have to evenly divide into 60 or be less than 60."
echo
echo "Examples:"
echo " /etc/cron-min/1 # Executes everything in that directory every 1 minute"
echo " /etc/cron-min/5 # Executes everything in that directory every 5 minutes"
echo " /etc/cron-min/13 # Executes everything in that directory every 13 minutes"
echo " /etc/cron-min/90 # Executes everything in that directory every 90 minutes"
echo
exit
fi
for dir in $basedir/* ; do
minutes=${dir##*/}
if [ $((($(date +%s)/60) % $minutes)) -eq 0 ]
then
for program in $basedir/$minutes/* ; do
if [ -x $program ]
then
$program &> /dev/null &
fi
done
fi
done
ajouté ce qui suit à mon crontab et travaille
15 */1 * * * root /usr/bin/some_script.sh >> /tmp/something.log
Pourriez-vous développer plus sur pourquoi c'est une bonne solution. –
*/10 * * * * root perl -e 'exit(time()%(90*60)>60)' && command
90 - il est l'un et une demi-heure en minutes
"> 60" - Je donne à cron capacité à retarder le début de l'écriture pendant une minute
également Avec l'aide de ce hack vous pouvez définir n'importe quelle période avec une résolution minute
Par exemple démarrer le script toutes les 71 minutes
* * * * * root perl -e 'exit(time()%(71*60)>60)' && command
Vous pouvez obtenir une fréquence si vous comptez les minutes (, heures, jours ou semaines) depuis Epoch, ajouter une condition au sommet de votre script, et définissez le script à exécuter toutes les minutes sur votre crontab :
#!/bin/bash
minutesSinceEpoch=$(($(date +'%s/60')))
# every 90 minutes (one and a half hours)
if [[ $(($minutesSinceEpoch % 90)) -ne 0 ]]; then
exit 0
fi
date(1)
Retourne la date actuelle, nous formater en secondes depuis Epoch (%s
) et nous faisons les mathématiques de base:
# .---------------------- bash command substitution
# |.--------------------- bash arithmetic expansion
# || .------------------- bash command substitution
# || | .---------------- date command
# || | | .------------ FORMAT argument
# || | | | .----- formula to calculate minutes/hours/days/etc is included into the format string passed to date command
# || | | | |
# ** * * * *
$(($(date +'%s/60')))
# * * ---------------
# | | |
# | | ·----------- date should result in something like "1438390397/60"
# | ·-------------------- it gets evaluated as an expression. (the maths)
# ·---------------------- and we can store it
A Vous pouvez utiliser cette approche avec des tâches cron horaires, quotidiennes ou mensuelles:
#!/bin/bash
# We can get the
minutes=$(($(date +'%s/60')))
hours=$(($(date +'%s/60/60')))
days=$(($(date +'%s/60/60/24')))
weeks=$(($(date +'%s/60/60/24/7')))
# or even
moons=$(($(date +'%s/60/60/24/656')))
# passed since Epoch and define a frequency
# let's say, every 7 hours
if [[ $(($hours % 7)) -ne 0 ]]; then
exit 0
fi
# and your actual script starts here
Salut stefanmaric, puisque vous semblez être ferme en la matière, s'il vous plaît ajouter la réponse à une seule des questions et signaler ceux qui sont de vrais doublons en tant que doublons de la meilleure combinaison question/réponse. – bummi
Salut @bummi, j'ai effectivement recherché la fonction "marquer comme doublon". Je ne l'ai pas trouvé, alors j'ai posté. Faisant plus de recherche depuis ton commentaire, j'ai découvert que je n'ai pas assez de réputation pour signaler des questions: http://meta.stackexchange.com/questions/118124/dans-la-certaine-que-le-magasin-du-plat- -stack-overflow Merci pour les conseils et je suis désolé pour le spam. – stefanmaric
- 1. exécuter une tâche PHP toutes les 24 heures
- 2. Cronjob toutes les 25 heures?
- 3. Comment puis-je exécuter certaines commandes sur un thread séparé?
- 4. Exécuter certaines ou toutes les sections d'un fichier ant
- 5. Comment faire un travail cron toutes les 72 minutes
- 6. Comment puis-je auditer toutes les commandes chmod et chgrp?
- 7. Comment configurer nginx + php-fpm + wordpress pour certaines URL seulement?
- 8. Comment ignorer toutes les instructions erronées et exécuter toutes les bonnes dans JDBC executeBatch?
- 9. Ajouter --color à toutes les commandes Unix
- 10. exécuter quelques commandes simultanément
- 11. Paramètres sur les fichiers php exécuter via Cron
- 12. ASP.NET 3.5 AJAX AutoCompleteExtender - Comment l'obtenir dans toutes les commandes?
- 13. Vim - comment stocker et exécuter des commandes couramment utilisées?
- 14. script cron pour agir comme une file d'attente OU une file d'attente pour cron?
- 15. Un impact de redémarrage OWSTIMER toutes les heures?
- 16. Configurer IIS 6.0 pour exécuter cgi (.exe)
- 17. Comment configurer firefox pour exécuter emacsclientw sur certains liens?
- 18. Comment configurer Apache pour exécuter des scripts CGI Perl?
- 19. Comment configurer MSBuild pour effectuer certaines tâches uniquement sur les versions de version?
- 20. Comment puis-je configurer vim pour que les commandes de mouvement incluent des underscores et CamelCase, mais l'achèvement les ignore?
- 21. Comment afficher les heures d'ouverture?
- 22. Comment puis-je configurer un travail cron sur mon site en utilisant PHP?
- 23. Demander une page web avec Cron
- 24. Travail de cron pour se connecter au serveur sql et exécuter un sproc en utilisant python
- 25. Configurer cron dans Windows sans avoir de popup?
- 26. Exécution d'un travail Cron
- 27. Comment trouver toutes les commandes exécutées sur une base de données MySQL dans un délai donné?
- 28. Comment puis-je ouvrir une connexion telnet et exécuter quelques commandes en C#
- 29. Comment configurer mon environnement pour ESC/Java2 sous Windows et générer/exécuter avec ESC/Java2?
- 30. Exécuter des commandes Séquentiellement en Python
Quelle exigence? La première phrase questionne la nécessité d'une heure et demie, la seconde fournit un billet de blog avec des informations sur la façon de le faire toutes les heures et demie. – vfilby
Upvoted parce que l'article de blog répond correctement à la question. –
Il ne faisait pas clairement référence à cela quand je l'ai voté. Il a été édité depuis pour préciser que le lien est à une solution potentielle pour la question de 90 minutes. – Alnitak