Quel est un moyen simple d'exécuter une commande, disons dans 8 heures? Je peux penser de cette façon:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
Y a-t-il une manière plus "correcte"?
bash
command-line
schedule
Steve Bennett
la source
la source
nohup
+sleep
? Pourquoi est-ce "impropre"?Réponses:
Vous pouvez utiliser la
at
commande. Lesat
commandes à exécuter ultérieurement. L'at
utilitaire doit lire les commandes à partir de l'entrée standard et les regrouper en une tâche à exécuter ultérieurement.Habituellement, il
at
est installé par défaut dans Ubuntu, mais si votre version ne l’inclut pas, installez-la via:Pour plus d'informations, options, exemples et autres, voir le référentiel de pages de manuel Ubuntu.
Exemple:
Vous pouvez également utiliser des raccourcis pratiques, comme
tomorrow
ounoon
, comme dansAvertissement: Ceci lancera immédiatement la commande située à gauche du tuyau,mais ne présentera sa sortie que plus tard. L'exemple montre également comment vous pouvez diriger des actions dans
at
.at -c
C’est ainsi que vous pouvez examiner les actions planifiées, que vous pouvez facilement lister avec leur numéro, comme avec:la source
at now +8 hours -f ~/myscript.sh
at 8:00
exécuter la commande à une heure absolue, etbatch
pour "quand on dirait que l'ordinateur est en veille"teatime
est à 16 heures. Pour certaines raisons, il n'est pas mentionné dans manpages.ubuntu.com/manpages/raring/man1/at.1posix.html, mais c'est dansman at
et ici manpages.ubuntu.com/manpages/raring/en/man1/at.1.html .gpio write 8 1
mais il s'est exécuté immédiatement.Oui, vous pouvez définir un travail cron.
Par exemple, si le temps est 14h39:00 et que nous sommes le vendredi 30 août, vous pouvez ajouter le travail cron suivant (à exécuter après 8 heures) dans votre fichier crontab à l'aide de la
crontab -e
commande:Plus à propos:
la source
crontab
jusqu'à ce que vous la supprimiez. Un an plus tard, une fois que vous avez oublié qui l'a mis là et pourquoi, il vous restera à vous gratter la tête et à vous demander quoi faire avec cette commande.Utilisez l'interface graphique basée sur Gnome pour
cron
,at
etc.:L'introduction de CronHowto suggère d'utiliser l' interface graphique
gnome-schedule
, ce qui est beaucoup plus pratique que de taper toutes les ordures dans le terminal (en particulier pour les utilisateurs "moyens" d'Ubuntu qui ne sont pas des utilisateurs "puissants" * nix / bsd.)Exécutez-le à l'aide du tableau de bord Unity (ou d'un autre menu d'applications) pour rechercher des tâches planifiées ou en cours d'exécution
gnome-schedule
.En utilisant
gnome-schedule
, pour un script de votre répertoire personnel, une nouvelle commande "at" serait configurée en utilisant ce type de fenêtre:la source
J'ai trouvé un moyen rapide et sale de faire cela avant de découvrir que
at
c'était une chose.Supposons que votre script soit exécuté à midi:
Supposons que vous souhaitiez le lancer demain midi (aujourd'hui, le 24 novembre):
Mise à jour : méthode légèrement meilleure: testez uniquement les chiffres qui vous intéressent, en utilisant
date +FORMAT
:la source
at
,cron
ou toute autre application de planificateur réel. La planification des tâches est difficile et vous ne devez pas réinventer une roue.at
.at
est que ses travaux survivront à un redémarrage.