Programmez facilement une commande pour qu'elle soit exécutée plus tard?

72

Comment exécuter une commande, par exemple, dans 8 heures? Je peux penser de cette façon:

nohup bash -c "sleep 28800 ; ./mycommand.sh" &

Y a-t-il un moyen plus "approprié"?

    
posée Steve Bennett 30.08.2013 - 13:25
la source

4 réponses

104

Vous pouvez utiliser la commande at . Les commandes at exécutent ultérieurement. L'utilitaire at doit lire les commandes de l'entrée standard et les regrouper en tant que travail pour être exécuté ultérieurement.

Habituellement, at est installé par défaut dans Ubuntu, mais si votre version ne l’inclut pas, installez via:

sudo apt-get install at

Pour plus d’informations, d’options, d’exemples et d’autres, consultez le dépôt de pages de manuel Ubuntu

Exemple:

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

Vous pouvez également utiliser des raccourcis pratiques, tels que tomorrow ou noon , comme dans

echo "tweet fore" | at teatime 

Avertissement: Cela exécutera la commande à gauche du tube immédiatement , mais présentera uniquement sa sortie ultérieurement. L'exemple montre également comment canaliser des actions vers at . at -c est la manière dont vous pouvez examiner les actions planifiées, que vous pouvez facilement répertorier avec leur numéro, comme avec:

at -c 3
    
réponse donnée Mitch 30.08.2013 - 13:39
la source
9

Oui, vous pouvez définir un travail cron.

Par exemple, si l'heure est 14:39:00 et aujourd'hui le vendredi 30 août, vous pouvez ajouter le travail cron suivant (à exécuter après 8 heures) dans votre fichier crontab en utilisant la commande crontab -e :

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

En savoir plus sur:

réponse donnée Radu Rădeanu 30.08.2013 - 13:34
la source
7

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

L’introduction de la CronHowto suggère d’utiliser le gnome-schedule gui, qui est bien plus agréable que de taper tous le terminal (en particulier pour les utilisateurs Ubuntu "moyens" qui ne sont pas des utilisateurs "nix / bsd").

Exécutez-le en utilisant Unity Dash (ou un autre menu d'applications) pour rechercher Tâches planifiées ou en exécutant gnome-schedule .

  

Sur les systèmes Ubuntu basés sur Gnome Outil de tâches planifiées Gnome (à partir de gnome-schedule)   package) dans Applications - & gt; Outils système fournit une interface graphique avec invite   pour utiliser Cron. Le site Web du projet est à lien ; la   le logiciel est installable à partir du Software Center ou en tapant

sudo apt-get install gnome-schedule
     

dans un terminal.

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

    
réponse donnée user29020 16.07.2014 - 21:20
la source
3

J'ai trouvé un moyen rapide et sale de le faire avant de découvrir que at était une chose.

Dites que vous souhaitez que votre script s'exécute à midi:

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

Dites que vous voulez qu’il fonctionne demain à midi (aujourd’hui le 24 novembre pour moi):

until [[ "$(date)" =~ "25 12:00:" ]]; do 
    sleep 30
done
./mycommand.sh
    
réponse donnée wjandrea 24.11.2015 - 07:07
la source

Lire d'autres questions sur les étiquettes