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"?
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"?
Réponses:
Vous pouvez utiliser la atcommande. Les atcommandes à exécuter ultérieurement. L' atutilitaire doit lire les commandes à partir de l'entrée standard et les regrouper en une tâche à exécuter ultérieurement.
Habituellement, il atest installé par défaut dans Ubuntu, mais si votre version ne l’inclut pas, installez-la via:
sudo apt-get install at
Pour plus d'informations, options, exemples et autres, voir le référentiel de pages de manuel Ubuntu.
Exemple:
at now +8 hours -f ~/myscript.sh
Vous pouvez également utiliser des raccourcis pratiques, comme tomorrowou noon, comme dans
echo "tweet fore" | at teatime
Avertissement: 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 dansat. at -cC’est ainsi que vous pouvez examiner les actions planifiées, que vous pouvez facilement lister avec leur numéro, comme avec:
at -c 3
at now +8 hours -f ~/myscript.sh
at 8:00exécuter la commande à une heure absolue, et batchpour "quand on dirait que l'ordinateur est en veille"
teatimeest à 16 heures. Pour certaines raisons, il n'est pas mentionné dans manpages.ubuntu.com/manpages/raring/man1/at.1posix.html, mais c'est dans man atet ici manpages.ubuntu.com/manpages/raring/en/man1/at.1.html .
gpio write 8 1mais 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 -ecommande:
39 22 30 8 5 /path/to/mycommand.sh
Plus à propos:
crontabjusqu'à 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, atetc.:
L'introduction de CronHowto suggère d'utiliser l' interface graphiquegnome-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.
Sur les systèmes Ubuntu basés sur Gnome, l'outil Tâches planifiées Gnome (du paquet gnome-schedule) dans Applications -> Outils système fournit une interface graphique avec une invite à utiliser Cron. Le site Web du projet est à l’adresse http://gnome-schedule.sourceforge.net/ ; le logiciel est installable à partir du centre logiciel ou en tapant
sudo apt-get install gnome-scheduledans un terminal.
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:

J'ai trouvé un moyen rapide et sale de faire cela avant de découvrir que atc'était une chose.
Supposons que votre script soit exécuté à midi:
until [[ "$(date)" =~ "12:00:" ]]; do
sleep 10
done
./mycommand.sh
Supposons que vous souhaitiez le lancer demain midi (aujourd'hui, le 24 novembre):
until [[ "$(date)" =~ "25 12:00:" ]]; do
sleep 30
done
./mycommand.sh
Mise à jour : méthode légèrement meilleure: testez uniquement les chiffres qui vous intéressent, en utilisant date +FORMAT:
until [[ $(date +%H:%M) == 21:06 ]]; do
...
at, cronou toute autre application de planificateur réel. La planification des tâches est difficile et vous ne devez pas réinventer une roue.
at.
atest que ses travaux survivront à un redémarrage.
nohup+sleep? Pourquoi est-ce "impropre"?