Comment arrêter l'ordinateur une fois la tâche terminée?

8

Je commence généralement un téléchargement avant d'aller à l'école.
Quelle commande dois-je utiliser pour effectuer automatiquement les sauvegardes nécessaires et éteindre l'ordinateur une fois une tâche particulière terminée?
(Par exemple, après avoir installé les mises à jour ou après avoir téléchargé un fichier volumineux.)

J'ai également posté cela sur unix.stackexchange .

El Burro
la source
1
Si vous téléchargez des torrents, certains d'entre eux ont une option d'arrêt après la fin. assurez-vous que l'achèvement signifie 100% et non le semis. Et si vous le faites via la ligne de commande, ajoutez simplement un && stop à la fin de la commande pour arrêter automatiquement le PC. les && moyens s'exécutent ensuite.
theTuxRacer
Presque toutes les réponses sont correctes, à mon humble avis. Plus vous donnez de détails sur le type de téléchargement et de programme que vous utilisez, plus nous pouvons être précis :)
Pitto
Je pense que la réponse basée sur le processus dans votre cross-post est l'une des plus belles et des plus flexibles que j'ai vues. unix.stackexchange.com/a/65060/21070 Vous pourrez peut-être utiliser `ps -elf | grep <somthing_related_to_task> pour identifier le PID qui expirera à la fin du processus.
TafT

Réponses:

8

Je sais que cela ne répond pas exactement à votre question, mais vous pouvez également le faire en fonction du temps, c'est-à-dire si vous pensez que votre téléchargement se terminera dans 2 heures, vous pouvez simplement émettre la commande:

shutdown -h +120
binW
la source
8

À faire une fois pour vous permettre d'arrêter la machine sans mot de passe:

Ouvrez une ligne de commande et tapez:

sudo visudo 

Dans le fichier qui s'ouvre, ajoutez la ligne suivante à la fin:

yourusername ALL=NOPASSWD: /sbin/halt

Quittez ensuite l'éditeur et sécurisez-le ( Ctrl+ X).

Vous pouvez maintenant arrêter votre ordinateur à partir de la ligne de commande, par exemple après avoir téléchargé quelque chose:

wget UrlOfTheFileYouWantToDownload && sudo halt
AK76
la source
4
Pour vous assurer que wget est retourné sans erreur, remplacez ";" avec "&&".
David Rivers
3

Pour arrêter après la mise à jour, vous pouvez utiliser ce script python: http://kotbcorp.blogspot.com/2009/06/shutdown-after-update-in-ubuntu.html

Pour arrêter après le téléchargement, j'utilise cette commande:

wget http://somehwere.com/path/to/some.file && halt
aneeshep
la source
2
N'oubliez pas que cela haltnécessite des privilèges de superutilisateur, vous devez donc exécuter sudo -savant d'entrer les commandes.
loevborg
3

D'autres réponses sont correctes, mais il manque quelque chose:

wget UrlOfTheFileYouWantToDownload ; sudo halt

contre

wget UrlOfTheFileYouWantToDownload && sudo halt

Le second arrête l'ordinateur uniquement s'il wgetrevient correctement. Le premier s'exécute en cas de wgetsuccès ou d'échec du retour.

David Oneill
la source
2

vous pouvez utiliser les gestionnaires de téléchargement ou les clients torrent pour éteindre le PC après avoir terminé ou supposer que vous défragmentez le disque, vous pouvez cliquer sur Arrêter après avoir fait ce qui est disponible dans la plupart des logiciels

FOSS DIVERSER
la source
2

Je suppose que cela dépend beaucoup de la façon dont vous avez fait votre «téléchargement».

Si vous parlez d'une mise à jour apt-get, d'une séquence de mise à niveau, en tant que root, vous chaînez vos commandes en utilisant le && (la séquence ne continue que s'il n'y a pas eu d'erreurs)

sudo su -
apt-get update && apt-get upgrade && shutdown -h now

Si vous parlez d'un téléchargement (par exemple en utilisant wget) [encore une fois, enchaînez les commandes en utilisant la notation &&, en vous assurant que les commandes s'exécutent dans l'ordre uniquement si la commande précédente a réussi]

sudo su -
wget -t0 -c http://somedownloadsite/path/file.foo && shutdown -h now

Si votre téléchargement a été effectué par un client graphique (gui), cela dépendra des mécanismes de ce client pour exécuter des scripts après un téléchargement réussi.

finley
la source
2
Ces commandes ne fonctionneront pas car sudo su -démarre un nouveau shell et les commandes après le point-virgule ne sont pas exécutées avant la fin du nouveau shell.
loevborg
Bon commentaire. ont modifié les instructions pour indiquer qu'il s'agit d'une séquence de commandes distincte.
finley
1

Personnellement, j'ai trouvé qu'il était plus facile d'utiliser gedit pour configurer l'original

yourusername ALL=NOPASSWD: /sbin/halt    

car sudo visudoétait déroutant pour moi et n'a pas montré clairement la dernière ligne

J'ai donc utilisé

sudo -H gedit /etc/sudoers

puis a fini avec une page claire (pour moi)

# User privilege specification
root    ALL=(ALL:ALL) ALL


# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d
shantiq ALL=NOPASSWD: /sbin/halt

Je pensais juste mentionner que si quelqu'un d'autre était un peu confus aussi

Shan
la source
1

Au lieu de modifier les autorisations à l'arrêt, vous pouvez effectuer les opérations suivantes:

sudo bash -c 'apt-get update; apt-get dist-upgrade; shutdown -h now'

Ce que cela fait est d'exécuter une invite bash en tant que root qui exécute les éléments de la liste entre guillemets simples, puis se ferme. Le bonus de cette méthode est qu'Ubuntu oubliera votre sudoauthentification initiale après une certaine période (en fonction de la période de temporisation définie - 15 minutes par défaut) et qu'une personne rencontrant votre machine ne pourra qu'arrêter la commande actuelle, pas en exécuter une nouvelle. Aussi, pour tous ceux qui disent utiliser su, essayez:

sudo -s
Chiffrer
la source
que se passe-t-il si le réseau tombe en panne pendant une courte période et apt-get ne fait pas son travail?
Quamis
1
Je suppose que vous voudriez toujours arrêter. Si une étape des commandes en -c échoue, les autres continueront car j'ai utilisé un point-virgule à la place du && (toutes les commandes chaînées avec && ne fonctionneront que si chacune réussit à son tour).
Chiffre
0

Je ne pense pas que vous puissiez le faire ... Il n'y a aucun moyen de savoir quand une application spécifique a terminé son travail.

autrefois, je faisais sudo su; sleep 3600; halt;

Quamis
la source
pourquoi voter contre?
Quamis
Quelqu'un était probablement en désaccord avec la partie «il n'y a aucun moyen de savoir»?
belacqua