web-dev-qa-db-fra.com

Planifiez-vous commodément une commande à exécuter plus tard?

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"?

82
Steve Bennett

Vous pouvez utiliser la commande atname__. atexécute les commandes ultérieurement. L'utilitaire atdoit lire les commandes à partir de l'entrée standard et les regrouper en tant que tâche à exécuter en vue d'une exécution ultérieure.

D'habitude, atest installé par défaut sous 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 Ubunt

Exemple:

at now +8 hours -f ~/myscript.sh

Vous pouvez également utiliser des raccourcis pratiques, tels que tomorrowou noonname__, comme dans

echo "Tweet fore" | at teatime 

Avertissement: Ceci lancera la commande à gauche du tuyau immédiatement mais ne présente sa sortie que plus tard. L'exemple montre également comment vous pouvez diriger les actions vers atname__. at -c est le moyen par lequel vous pouvez examiner les actions planifiées, que vous pouvez facilement lister avec leur numéro, comme avec:

at -c 3
114
Mitch

Oui, vous pouvez définir un travail cron.

Par exemple, si l'heure est 14h39:00 et celle d'aujourd'hui 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 commande crontab -e:

39 22 30 8 5  /path/to/mycommand.sh

Plus à propos:

8
Radu Rădeanu

Utilisez l'interface graphique basée sur Gnome pour cron, at, etc.:

L'introduction de CronHowto suggère d'utiliser le gnome-schedule gui, ce qui est bien plus agréable 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 du menu des autres applications) pour rechercher des tâches planifiées ou exécuter 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 se trouve à http://gnome-schedule.sourceforge.net/ ; le logiciel est installable à partir du centre logiciel ou en tapant

Sudo apt-get install gnome-schedule

dans un terminal.

En utilisant gnome-schedule, pour un script de votre répertoire personnel, une nouvelle commande "at" serait configurée à l'aide de ce type de fenêtre:

enter image description here

7
user29020

J'ai trouvé un moyen rapide et sale de faire cela avant de découvrir que até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 pour moi):

until [[ "$(date)" =~ "25 12:00:" ]]; do 
    sleep 30
done
./mycommand.sh
5
wjandrea