2009-04-14 8 views

Répondre

3

Vous ne pouvez pas directement le faire depuis cron/crontab.

Les tâches Cron s'exécutent sur une planification spécifique et non sur un intervalle spécifique. Une alternative serait d'établir un emploi du temps approximatif de votre «toutes les 72 minutes» en courant à minuit, 1:12, 2:24, 3:36, ..., et en l'étirant pour approximer à minuit. Votre fichier crontab pourrait spécifier toutes ces heures comme des temps à exécuter. Une autre solution consisterait à avoir une application distincte gérer la planification et déclencher votre application.

22

Utiliser at (man at). Demandez à votre application ou à votre script de démarrage de calculer un délai de démarrage de 72 minutes dans le futur et de planifier elle-même l'exécution avant qu'elle ne commence à fonctionner.

Disponible sur Windows XP et Vista aussi.

Voici un exemple pour gnu/linux: à command.sh -f maintenant + 72 minutes

+1

s/programmez-le/programmez-vous pour exécuter à nouveau/ –

+1

Espérons que cela devienne la réponse acceptée. Une fois que vous avez démarré le travail, il peut se replier à chaque fois qu'il s'exécute. Vous pourriez cependant constater que vous n'êtes plus synchronisé. alors assurez-vous de replanifier votre travail au début de votre script plutôt que le dernier. –

2

Vous devez définir exactement 20 tâches pour cela - à savoir mettre un à 00h00, un à côté à 01 : 12, le suivant à 02:24, etc.

20 itérations font une journée complète.

Malheureusement, c'est la seule façon de le faire, car les tâches cron sont configurées dans un calendrier fixe au lieu d'être exécutées, disons, "après X minutes, la dernière tâche a été exécutée".

33

Comme cron exécute des travaux en fonction du temps et non en fonction de l'intervalle, il n'existe pas de moyen simple de le faire. Cependant, même si c'est un peu un hack, vous pouvez configurer plusieurs lignes dans crontab jusqu'à ce que vous trouviez le dénominateur commun. Puisque vous voulez une tâche à exécuter toutes les 72 minutes, il doit exécuter aux heures suivantes:

  • 00:00
  • 01:12
  • 02:24
  • 03:36
  • 04 : 48
  • 06:00
  • 07:12
  • ...

Comme vous pouvez le voir, le motif se répète toutes les 6 heures avec 5 tâches. Ainsi, vous aurez 5 lignes dans votre crontab:

 
0 0,6,12,18 * * * command 
12 1,7,13,19 * * * command 
24 2,8,14,20 * * * command 
36 3,9,15,21 * * * command 
48 4,10,16,22 * * * command 

L'autre option, bien sûr, est de créer un script démon emballage ou shell qui exécute et dort pendant le temps désiré jusqu'à l'arrêt.

4

Vous pouvez toujours prendre l'approche du déclenchement de cron chaque minute et laisser votre script quitter immédiatement s'il a été exécuté il y a plus de 72 minutes.

2

N'utilisez pas cron ...

#!/bin/sh 
while [ true ] 
do 
    sleep 4320 
    echo "Put your program here" & 
done 
+1

Soyez prudent si le programme se bloque, vous devrez le redémarrer. En outre, après un redémarrage de la machine, le programme ne sera pas en cours d'exécution, vous devrez le démarrer. –

+0

Oui, mieux vaut en faire un démon et utiliser monit par exemple pour le garder en marche. – mahemoff

-2

Euh je sais que c'est trop tard, mais je regardais quelques problèmes de planification et j'ai vu cette question.

Il suffit de faire cela dans votre crontab

*/72 * * * * /home/script.sh

+4

ne fonctionne pas, au moins pas avec vixie cron 3.0 – hop

+2

Les minutes sont 0-59. http://www.pantz.org/software/cron/croninfo.html – dresende

+1

Cela ne fonctionnera pas, les minutes ont entre 0 et 59 et tout ce qui dépasse 30 minutes affichera à x passé, c'est-à-dire que 34 afficheront à minuit passé, pas tous 34 minutes. – omega1

Questions connexes