web-dev-qa-db-fra.com

Exécuter la commande toutes les secondes dans Bash?

Je veux écrire un téléchargeur d'images et l'assigner sur bash. Ce que j'ai et ce dont j'ai besoin:

J'ai:

  1. Commande, qui fonctionne très bien (quelque chose comme wget http://mywebcam.com/image.jpg -O /var/cam/Image.jpg)
  2. Droits root

  3. Ligne Internet rapide entre mon serveur et ma webcam

Ce dont j'ai besoin:

Téléchargez l'image de la caméra toutes les secondes * (sommeil 1?) * Et réécrivez-la localement (ma commande le fait bien) Exécutez ce script immédiatement et ne vous inquiétez pas de redémarrer (je pense J'ai besoin de créer un fichier avec les commandes bash et de l'exécuter une fois + définir le travail crontab "au redémarrage" sur ce fichier, non?)

Peut-être qu'il y a quelqu'un qui sait que dois-je faire?

47
Egor Sazanovich

Si vous souhaitez exécuter une commande à des intervalles d'une seconde (une seconde entre la fin d'une commande et le début de la suivante, ce qui n'est pas la même chose que l'exécution toutes les secondes), faites simplement:

 pendant le sommeil 1; do cmd; terminé

Si vous souhaitez que cela démarre au redémarrage, la méthode dépendra de votre système.

96
William Pursell

La commande watch le fera directement pour vous. Il affiche également le résultat d'une manière agréable.

$ watch -n 1 date

Remplacez date par votre commande. Le -n option spécifie l'intervalle en secondes.

67
while