Comment puis-je hiberner / suspendre à partir de la ligne de commande et le faire à un moment précis


36

J'ai réussi à savoir comment suspendre / mettre en veille le système à partir de la ligne de commande en lisant Comment puis-je suspendre / mettre en veille à partir de la ligne de commande? .

Cependant, je voudrais savoir comment utiliser la ligne de commande pour suspendre / mettre en veille à un moment donné, en termes absolus (exemple, 11:00) ou relatifs (exemple, en 30 minutes).

Je sais déjà comment faire cela avec shutdown, mais je suis certain que la commande est similaire.

Réponses:


43

Vous pouvez utiliser la atcommande pour planifier toute action, y compris l'exécution des commandes détaillées dans cette question .

Par exemple, si vous souhaitez passer en hibernation dans 30 minutes:

echo 'pmi action hibernate' | at now + 30 min

Ou si vous souhaitez suspendre à 23h00:

echo 'pmi action suspend' | at 11pm

Si vous avez besoin d'exécuter une commande comme root, exécutez atavec sudoplutôt que la commande elle - même avec sudo(puisque sudone doit être exécutée de manière interactive, à moins que vous avez configuré , il ne pas demander votre mot de passe). Par exemple, les équivalents des commandes ci-dessus utilisant pm-hibernateet pm-suspendsont:

echo pm-hibernate | sudo at now + 30 min

echo pm-suspend | sudo at 11pm


Merci d'avoir remarqué que les deux situations étaient demandées ... J'ai modifié le titre pour refléter cela également. J'ai modifié ma réponse pour inclure les deux situations maintenant.
Cprofitt

Une idée de comment je peux effacer les emplois?
KhoPhi

2
@Rexford La atrmcommande supprime les travaux créés par at.
Eliah Kagan

9

Pour la spécification relative (par exemple "après 30 minutes"), vous pouvez simplement utiliser sleepcommande pour faire attendre la commande de suspension / veille prolongée.


Exemples:

Attendez 30 minutes, puis suspendez:

sudo sleep 30m; sudo pm-suspend

Attendez 1 heure, puis hiberner:

sudo sleep 1h; sudo pm-hibernate

J'aime cette approche aussi.
KhoPhi

2
Après 1h, vous pm-hibernatevoulez à nouveau un mot de passe pour root et la suspension ne se produit pas.
Vitaly Zdanevich

que diriez-vous de vous connecter en tant que root pour éviter de vous demander un mot de passe?
banan3'14

4

Pour des heures spécifiques répétées - comme arrêter des ordinateurs sont une heure spécifique chaque jour. utilisez cron.

crontab -e

ajoutez ce qui suit:

15 14 1 * * pmi action suspend

Si vous voulez le personnaliser.

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

Pour un travail unique nous la commande à

Par exemple, si vous souhaitez passer en hibernation dans 30 minutes:

echo 'pmi action hibernate' | at now + 30 min

Ou si vous souhaitez suspendre à 23h00:

echo 'pmi action suspend' | at 11pm

2
L'utilisation cronest une bonne solution lorsque l'objectif est de suspendre ou d'hiberner à une heure précise de la journée ou à une heure spécifique un jour de la semaine, du mois ou de l'année spécifiques. Mais pour programmer une suspension ou une hibernation unique, ce qui semble être ce que demandait Ederico (et qui est beaucoup plus logique à vouloir faire), la atcommande doit être utilisée. (Vous pouvez planifier un seul événement avec cronen faisant en sorte que l'événement soit modifié, par exemple en utilisant sedou awk, mais c'est extrêmement complexe et inutile; utilisez at.)
Eliah Kagan

Ne correspond pas aux termes relatifs demandés par la question, il n’est utile que pour des horaires spécifiques.
Bruno Pereira

Oui, c'était un exemple pour le "temps spécifique" demandé. "Cependant, je voudrais savoir comment utiliser la ligne de commande pour suspendre / hiberner à un moment donné, en absolu (exemple, 23h00)"
cprofitt

1
Vous avez modifié votre réponse pour ajouter des informations sur son utilisation at, mais les informations que vous avez ajoutées ne sont malheureusement pas correctes. L' <opérateur redirige le texte du fichier ou du périphérique spécifié vers sa droite vers l'entrée standard pour la commande spécifiée à sa gauche. Si vous voulez utiliser <au lieu de |(comme dans ma réponse ), vous devez créer un fichier avec pmi action suspend(ou pmi action hibernate) comme contenu. Une telle complexité rend |mieux ici.
Eliah Kagan

En règle générale, lorsque vous avez une catcommande à gauche d'un |(par exemple cat foo | bar), vous pouvez la remplacer par une <expression ( bar < foo). Mais lorsque vous avez une echocommande à gauche d'un |, celle-ci ne peut pas être remplacée trivialement par une <expression.
Eliah Kagan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.