web-dev-qa-db-fra.com

Comment arrêter l'ordinateur après la fin d'une tâche?

Je commence habituellement un téléchargement avant d'aller à l'école.
[.____] Quelle commande dois-je utiliser pour effectuer automatiquement les économies nécessaires et éteindre l'ordinateur après la fin d'une tâche particulière?
[.____] (Dites, après avoir installé les mises à jour, ou après avoir téléchargé un grand fichier.)

J'ai également affiché sur - Askubunt .

27
El Burro

Cela dépend de la tâche de démarrage. S'il s'agit d'un outil de ligne de commande, vous pouvez simplement exécuter halt ou shutdown -h now:

  1. wget http://..../somelargefile; halt - halt _ sera exécuté après wget

  2. wget http://..../somelargefile && halt - halt _ sera exécuté si wget renvoie aucune erreur

  3. wget http://..../somelargefile || halt - halt _ sera exécuté si wget erreurs de retour

Alternative à ceci utilise kshutdown - Dans cette application, vous pouvez spécifier quelle action doit être effectuée (redémarrage/arrêt/hibernate/etc. ou exécution de la commande) et lorsque (après un certain temps ou lorsqu'une autre application quitte). Si vous souhaitez utiliser cet outil, vous devez choisir le processus correct - certaines utilitaires de mise à jour commencent peu de sous-processus.

KShutdown

26
pbm

Chaque processus a un répertoire nommé en fonction de son identifiant de processus (PID) dans le système de fichiers proc. Par conséquent, vous pouvez attendre une résiliation d'un processus spécifique en vérifiant si son répertoire existe à plusieurs reprises.

Vous pouvez l'utiliser pour effectuer une fermeture système après la terminaison de processus comme celle-ci (remplacez 2296 par le PID à attendre):

su -c 'while [[ -d /proc/2296 ]]; do sleep 1; done; poweroff'

Avantages:

  • Vous pouvez décider d'arrêter ou non après la mise hors tension de la commande shell
  • L'arrêt est émis en tant que root, la commande à attendre n'est pas nécessairement faite en tant que root (pas besoin de contourner le retard Sudo- Invite de mot de passe).

Désavantages:

  • Il peut arriver que votre processus se termine et que le système d'exploitation réutilise ensuite le même PID pour un processus nouvellement généré dans cette seconde (condition de race). Vous continuerez ainsi à attendre que ce nouveau processus se termine.
19
moooeeeep

Si vous souhaitez surveiller un processus déjà démarré, vous pouvez le faire dans A Shell :

# while pgrep &>/dev/null -f process_name; do sleep 60; done; shutdown -h now
3
Gilles Quenot

Il y a une application, appelée Sentinella qui peut le faire pour vous avec son interface graphique: sentinella

pour l'installer:

Sudo aptitude update
Sudo aptitude install sentinella
1
shgnInc