2017-10-09 6 views
0

Le titre dit tout:commande Exécuter toutes les 30 secondes en arrière-plan sur CentOS

Comment puis-je exécuter une commande toutes les 30 secondes en arrière-plan sur CentOS indéfiniment? C'est-à-dire: je veux être capable de faire d'autres choses pendant que d'autres scripts sont appelés périodiquement.

+0

Que diriez-vous d'un travail de cron si chaque minute est bonne. Sinon, deux emplois cron, l'un avec «sommeil 30» avant la tâche principale? – sauerburger

+0

@sauerburger, je pensais à ce sujet, mais il me semble un peu maladroit. N'y a-t-il pas une meilleure façon plus canonique de le faire? – IHaveAQuestion

Répondre

1

Par défaut, cron ne peut pas planifier l'exécution des travaux en quelques secondes. Le plus que vous pouvez faire est de l'exécuter chaque minute.

1) exécuter par un seul Cron

Pour exécuter par Cron, toutes les 30 secondes, vous pouvez créer une seule entrée cron comme ceci:

* * * * * /bin/bash -l -c "/path/to/script.sh; sleep 30 ; /path/to/script.sh" 

2) l'exécuter en utilisant regarder

Exécutez le script en utilisant la montre ((vous pouvez démarrer un écran ou tmux) ou même en arrière-plan)

watch --interval 30 /path/to/script.sh 

3) utiliser une boucle while comme ceci:

#!/bin/env bash 
while [ true ]; do 
sleep 30 
/path/to/script.sh 
done 

Gardez à l'esprit que cette option est manque pas la preuve car tout dépend de ce que exactement votre Cron fait et combien de temps il faut pour le travail a été exécuté par cron à compléter. Avec l'exemple ci-dessus (3), si le cron prend 25 secondes pour s'exécuter, alors votre script sera retardé et ainsi de suite. Même à l'option (1), ainsi

4) en utilisant un Cron alternatif au Cron linux par défaut (utilisez fcron)

5) Des questions similaires ont déjà été posées sur SO donc vous pourriez voulez jeter un oeil à ceci: How to run Cronjobs more often than once per minute?