exécution d'une commande toutes les heures


12

J'ai un indexeur pour sphinx, et je veux qu'il fonctionne une fois toutes les heures sous linux. Comment pourrais-je faire cela?

linux 

Réponses:


14

Puisque tout le monde publie des réponses courtes, j'ai pensé que je serais un peu plus descriptif ...

cron est un démon présent sur la plupart des systèmes * nix qui exécute des commandes planifiées aux intervalles spécifiés.

Vous ajoutez un script à la liste en le copiant dans le dossier de votre choix:

  • cron.daily
  • cron.hourly
  • cron.monthly
  • cron.weekly

Ces dossiers se trouvent généralement sous /etcdossier.


2
Les dossiers cron. * sont très spécifiques à la distribution. crontab est le moyen universel de faire exécuter des éléments par cron à des intervalles spécifiés.
MDMarra

Vrai. Je donne juste un exemple. crontab vous donne de toute façon beaucoup plus de contrôle.
Nathan Osman


7

Juste pour être différent -

selon vos besoins, vous pouvez utiliser la commande watch.

  watch --interval=3600 command

1
Est-ce que cela exécute la commande toutes les 1 heure; ou exécute-t-il la commande, attend 1 h, puis s'exécute à nouveau? Notez que cela fait une bonne différence si la commande prend très longtemps. (Je demande parce que ce n'était pas clair dans la page de manuel.)
Malabarba

Vraiment pas si difficile de l'essayer vous-même.
mimoralea


2

vous éditez le fichier cron en entrant la commande crontab -e

qui vous dépose dans un éditeur «vi» (pour Linux et FreeBSD actuels).

puis entrez ce qui suit: (tapez «i» pour l'insertion)

00 * * * * /path/to/sphinx_indexer.exe

puis enregistrez et quittez (appuyez sur 'esc' puis tapez ce qui suit)

:wq



1

Si vous n'en avez besoin que de temps en temps, pas de manière permanente comme vous le faites avec cron, et que la watchsolution n'est pas assez flexible, vous pouvez également utiliser un bon vieux script bash:

while true; do
   # do stuff
   sleep $[60 * 60]
done

Cela ne fonctionnera pas comme #do Stuff s'il faut 3599 secondes pour s'exécuter, puis selon l'exigence, le script doit déclencher la seconde suivante sur les pupilles et réinitialiser l'horloge à 0, mais dans ce cas, il s'arrêtera à 3599e seconde et puis mettez-vous en veille pendant 3600 secondes. Il n'y aura pas de chevauchement mais un écart inattendu entre les itérations. Ici, je suppose que l'utilisateur essaie d'exécuter un travail toutes les heures sans cron.
mannoj

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.