Je veux créer un travail cron qui exécute un script toutes les 5 secondes. Voyant que les travaux de cron ne permet que des incréments de minutes 0-59, etc.
Je pensais créer un autre script qui appelle mon script d'origine écrit ci-dessous. P>
#!/bin/bash while true do # script in the same directory as this script. is this correct? bash makemehappy.sh sleep 1 done
6 Réponses :
Essayez d'utiliser Anacron ou, mieux encore, un script Init pour démarrer lorsque l'ordinateur commence. P>
Si vous voulez que le script "redémarre", vous devez exécuter quelque chose toutes les quelques minutes pour vérifier que l'original est toujours en marche. Cela peut être fait dans InitTAB ( / etc / inittab code>) ou, sur Ubuntu,
/etc/event.d code>. Essayez
man 5 inittab code>, en regardant l'option "Respawn". P>
Je n'utiliserais pas de cron pour cela. J'utiliserais ce script Bash (utilisez un chemin absolu, sauf si vous voulez qu'il soit portable et savoir em> que la structure de répertoires sera préservée). p>
à la place, je voudrais juste En ce qui concerne le départ avec votre système, cela dépend du système. Sur (Certaines) Distresses Linux, il y a un fichier appelé Donc, si vous avez une boucle sans fin et une entrée dans 5 code>, comme vous l'avez fait (seulement 5 secondes au lieu de 1). p>
/etc/rc.local code> dans lequel vous pouvez ajouter des scripts à exécuter lorsque le système commence. Eh bien ... je ne devrais pas être aussi général, les distributions que j'ai utilisées ont ceci. Si vous courez Ubuntu, il n'y a plus d'inittab, ils utilisent UPSTART, BTW. P>
/etc/rc.local code>, vous devez être doré pour qu'il fonctionne pour fonctionner sans fin (ou jusqu'à ce qu'elle rencontre un problème et des sorties). < / p>
Ma distribution est Ubuntu? Je n'arrive pas à trouver ce fichier rc.local dans l'annuaire ETC. suggestions?
quelle version? (chat / etc / problème)
10.04 J'ai réussi à le comprendre. :) En l'ajoutant à init.d et à mettre à jour la mise à jour-rc.d
agréable! J'espère que cela fonctionne pour vous. (Toute chance de choisir ma réponse si cela vous a aidé? n'essayez pas d'être impoli, j'essaie juste de construire mon représentant, lol)
Notez que la sommeil 5 ne garantit pas que votre code sera exécuté exactement toutes les 5 secondes, ce n'est qu'au moins 5 secondes entre exécutions ultérieures.
C'est un bon point. Si le système est sous charge lourde, il pourrait prendre un certain temps pour traiter la prochaine itération. (Ou je manque quelque chose d'autre?)
Certains cron code> S ont un spécificateur d'heure
@reboot CODE> (ceci couvre tous les champs de l'heure et de la date). Si vous le faites, vous pouvez l'utiliser. S'il s'agit d'un service «système» (plutôt que quelque chose qui fonctionne pour vous-même), les autres solutions ici sont probablement meilleures. P>
Les scripts init sont bien au démarrage, mais ne détectez pas si un processus échoue et doit être redémarré. Supervisord CODE> Est-ce qu'un excellent travail de détection de processus a échoué et de les redémarrer. Je recommanderais un script avec une boucle de 5 secondes comme @tim décrit, mais envelopper
Supervisord CODE> autour de cela pour vous assurer qu'il continue à fonctionner. P>
Comme expliqué en détail dans Ma réponse à une question similaire , vous pouvez utiliser des unités de minuterie SystemD avec n'importe quel horaire que vous avez Vouloir - jusqu'à un calendrier théorique 1 nanoseconde Aperçu rapide: P> : p> (après l'activer, il sera automatiquement automatique à chaque démarrage de l'ordinateur, mais vous voulez probablement le démarrer maintenant de toute façon). p> p> Sleep Code> KORDGES STRORT>
/home/myusuf3/.config/systemd/user/makemehappy.service code> p>
man systemd.timer code>
: li>
ol> /home/myusuf3/.config/systemd/user/makemeHappy.Timer code> p>
Pour répondre à la question dans le titre, voici comment exécuter un cronjob toutes les 5 secondes: Ce n'est pas beau, mais cette solution est livrée sans outils supplémentaires ni dépendances. Donc, si vous travaillez des emplois cron, cela devrait travailler tout de suite. P> P>
Essayer de faire quelque chose toutes les 5 secondes est vraiment la meilleure solution à votre problème?
Dupliqué possible de exécuter un cron toutes les 30 secondes