Agence web » Actualités du digital » Comment mettre en veille ou mettre en veille Linux à partir de la ligne de commande –

Comment mettre en veille ou mettre en veille Linux à partir de la ligne de commande –

Shutterstock / Moriz

Hiberner et dormir est pour les ours et les ordinateurs! Si votre objectif est de consommer moins d’électricité, ce guide vous montrera comment créer un petit script pour mettre en veille, mettre en veille ou geler votre ordinateur en toute sécurité à partir de la ligne de commande.

Hibernation et Dormir sous Linux

La mise en veille prolongée d’un ordinateur enregistrera le contenu actuel de la mémoire de l’ordinateur (le RAM mémoire de votre ordinateur) sur le disque, en particulier sur l’espace de swap. Après cela, l’alimentation sera coupée automatiquement par un appel au matériel, et lorsque vous redémarrerez l’ordinateur, le contenu de la mémoire sera lu de l’espace d’échange dans la mémoire principale et vous pourrez continuer à utiliser l’ordinateur exactement au point où vous avez mis en veille prolongée. il.

Il y a un défi en ce qui concerne la mise en veille prolongée d’une instance Linux à l’aide de la ligne de commande: vous aurez besoin d’un espace de swap suffisamment grand pour encapsuler toute la taille de la RAM, et potentiellement un peu plus pour l’utilisation de swap simultanée normale par les applications. Ainsi, si vous avez 8 Go de mémoire RAM dans votre système, vous pouvez allouer un espace de swap de 16 à 20 Go pour vous assurer qu’il y en a suffisamment. Si vous souhaitez savoir comment procéder, consultez notre guide Comment créer et activer un fichier d’échange sur la ligne de commande Linux.

Un état de veille est très similaire, bien que l’alimentation ne soit pas complètement supprimée. Votre mémoire, et parfois votre processeur, resteront sous tension de sorte que lorsque vous reviendrez à la machine, et par exemple appuyez sur la barre d’espace ou cliquez sur un bouton de la souris (comme événements de réveil), l’ordinateur recommencera à fonctionner au point où vous l’avez mis en sommeil. Ces événements de réveil peuvent généralement être configurés à partir du BIOS.

Le BIOS de votre ordinateur est généralement accessible lors du démarrage de votre ordinateur, à condition qu’il n’ait pas été mis en veille prolongée ou mis en veille, mais qu’il s’éteigne complètement lors de sa dernière utilisation. Souvent, il est accessible en appuyant sur une touche telle que F2 ou DEL (ou toute autre touche affichée à l’écran ou disponible dans le manuel du fabricant de votre carte mère) pendant le démarrage précoce de votre système (dès qu’un texte est affiché à l’écran après avoir appuyé sur le bouton d’alimentation).

Il existe généralement trois niveaux de niveaux de suspension d’économie d’énergie basés sur le noyau disponibles sous Linux, fournis par le système d’exploitation (ou plus spécifiquement le noyau).

Ces niveaux sont intégrés au noyau et leur disponibilité dépend du système d’exploitation utilisé. Les niveaux sont Suspendre au ralenti (bien nommé s2idle ou Geler), Suspendre en mémoire (mem ou plus correctement Profond) et Suspend-To-Disk (disque). Votre système peut également prendre en charge un mode veille (standby ou shallow). Nous en apprendrons bientôt plus sur comment découvrir les niveaux disponibles sur votre système et comment les contrôler!

Les ordinateurs de bureau ne parviennent-ils pas à mettre en veille ou en veille prolongée?

Il est intéressant de noter que bien que la suspension en mémoire et la suspension sur disque soient généralement mises à disposition par le noyau et prises en charge par le système, le système d’exploitation fonctionnant au-dessus du noyau ne parviendra pas – avec une certaine régularité – à présenter ces options dans son GUI / Bureau.

Par exemple, sur une installation récente de Mint 20 (un système d’exploitation moderne basé sur Ubuntu), clonée sur un système moderne, les options suivantes étaient disponibles en appuyant sur le bouton d’alimentation dans l’interface graphique / bureau xcfe:

Pas de mise en veille, d'hibernation ou de veille offert

Se déconnecter, redémarrer, arrêter et changer d’utilisateur, mais non Dormir, Etre prêt ni Hiberner! Pouvoir encore suspendre ce système en mémoire ou sur disque serait donc un grand pas en avant, même si nous devons appeler le terminal pour ce faire. La section suivante vous expliquera comment faire cela, mais examinons d’abord les options disponibles sur votre système et leur signification.

Si vous exécutez cat /sys/power/state sur votre ligne de commande, vous verrez quelque chose de similaire à ce qui suit:

freeze mem et options de disque disponibles dans / sys / power / state

Sur ce système particulier, les trois principales options (freeze, mem and disk) sont pris en charge. Vous pouvez également voir standby ou votre système.

Le freeze l’option, lorsqu’elle est définie, déclenchera un état de veille léger basé uniquement sur un logiciel pour votre système. L’espace utilisateur Linux sera gelé (d’où le terme) et tous les périphériques d’E / S seront mis dans un état de faible consommation. Bien que cette option et cet état soient toujours pris en charge et limitent la consommation d’énergie, il s’agit de la forme la plus légère d’arrêt de votre machine. Si aucune autre option ne vous est disponible, cela peut encore économiser sur les factures d’électricité, mais pas autant que d’arrêter le système.

La question de cette option / état devient donc une question de conscience (laisser le système dans un état prêt à l’emploi et comme laissé de côté et économiser un peu par rapport à l’arrêt, mais devoir rouvrir les applications et économiser davantage). Espérons que votre système d’exploitation et votre matériel prennent également en charge d’autres états. Si ce n’est pas le cas, envisagez de mettre à niveau ou de modifier votre système d’exploitation et / ou de mettre à jour le micrologiciel de votre BIOS et d’autres périphériques matériels vers leurs dernières versions. La modification des options liées à l’alimentation dans le BIOS peut également aider.

Le mem option, lorsqu’elle est définie, lancera soit une suspension au ralenti, qui est identique à la Geler option, ou faites un Suspend-To-RAM, où tout dans le système est mis dans un état de faible consommation à l’exception de la mémoire. L’option utilisée (Suspend-To-Idle ou Suspend-To-RAM) dépend du réglage du /sys/power/mem_sleep déposer. Vous pouvez examiner les différents modes de ce fichier en exécutant simplement cat /sys/power/mem_sleep sur la ligne de commande du terminal.

De manière générale, je m’attendrais à ce que cette option soit définie par défaut sur deep par défaut (comme indiqué par [code]) sur tous les systèmes d’exploitation Linux, tout simplement parce que lorsque l’on définit le /sys/power/state option pour mem, on s’attendrait à ce que le système écrive le contenu dans la mémoire (c’est-à-dire Suspend-To-RAM, qui est défini en utilisant deep dans /sys/power/mem_sleep) plutôt que le mode Suspend-To-Idle comme indiqué par s2idle.

Notez également qu’il est ainsi possible d’utiliser deux manières différentes de Suspend-To-Idle: soit en écrivant freeze à /sys/power/state, ou en écrivant s2idle à /sys/power/mem_sleep et ensuite écrire mem à /sys/power/state.

Comme vous pouvez le voir, la terminologie utilisée est légèrement confuse et mélangée en raison de la présence du /sys/power/mem_sleep déposer. Un moyen plus simple de faire les choses, et probablement la méthode par défaut sur tous les systèmes d’exploitation Linux modernes, serait de simplement quitter /sys/power/mem_sleep mis à deep et écris freeze à /sys/power/state to Suspend-To-Idle, et écrire mem à /sys/power/state à Suspend-To-RAM.

Enfin, nous avons la dernière option (à condition que votre système ne dispose pas du standby , qui est une option Power-On-Suspend où le CPU maintient l’alimentation) et qui est disk. Cette option nous permet de suspendre sur le disque. Fondamentalement, il s’agit de l’option Hibernate que nous avons décrite précédemment, alors que Suspend-To-Idle ou Suspend-To-RAM peut être considéré comme des modes de veille. Dans ce mode, toutes les données en mémoire sont écrites sur le disque, de sorte que la mémoire elle-même peut également être libérée de l’alimentation: un arrêt complet.

En résumé, le moyen le plus simple de sélectionner l’une des trois principales options de suspension de l’alimentation est d’avoir (ou de quitter) /sys/power/mem_sleep mis à deep, ignorez ce fichier, puis sélectionnez nos modes d’alimentation de suspension en utilisant /sys/power/state seulement, et en écrivant freeze (Suspend-To-Idle), mem (Suspend-To-RAM), ou disk (Suspend-To-Disk) à ce fichier. Voyons comment faire cela, en toute sécurité.

Comment mettre en veille, dormir ou geler

Nous voulons avoir un script qui mettra en veille, dormir ou geler en toute sécurité notre ordinateur. Pourquoi la mention de la sécurité? Eh bien, considérez comment l’écriture freeze à /sys/power/state va immédiatement geler le système et restaurer le système exactement dans le même état lorsqu’une touche est enfoncée ou qu’une souris est cliquée (selon que ces options sont activées via les paramètres du BIOS). Votre bureau, déverrouillé, est toujours déverrouillé!

Nous avons donc besoin d’un script qui non seulement hibernera, mettra en veille ou gèlera notre machine, mais aussi un qui verrouille notre bureau pour nous. La mise en œuvre de ceci dépendra du système d’exploitation, ainsi que du bureau / GUI choisi.

Une recherche rapide dans votre moteur de recherche préféré pour [screen] verrouiller l’interface graphique de distribution Linux à partir de la ligne de commandeécran est un mot / terme de recherche facultatif, Distribution Linux est le nom de votre distribution Linux, et GUI est le nom de votre GUI (comme xcfe par exemple), révélera une ou plusieurs façons de verrouiller votre terminal à partir de la ligne de commande. Pour ce guide, nous utiliserons Linux Mint 20 exécutant xcfe.

Nous définissons notre hibernate.sh script comme suit:

sudo sleep 0.1  # To get auth
xflock4
sleep 3
echo disk | sudo tee /sys/power/state  # Requires sufficient swap space

Dans la première ligne, nous invoquons sudo pour activer l’authentification au niveau root / super utilisateur. Nous facturons simplement sleep 0.1 comme une commande factice. Le seul but ici est que les commandes sudo suivantes (comme la dernière) ne nous obligent pas à entrer l’authentification, car il est un peu difficile de taper un mot de passe dans un terminal lorsque votre écran est déjà verrouillé 😉

Après cela, nous invoquons le système d’exploitation et le choix de la commande de verrouillage spécifique au bureau / GUI / gestionnaire de fenêtres, étant xflock4 pour xcfe dans Linux Mint 20. Ensuite, nous dormons 3 secondes en utilisant sleep 3.

Enfin, nous écrivons (en utilisant echo) le mot disk à /sys/power/state utilisant tee (voir man tee pour plus d’informations si cela vous intéresse, en gros tee lit à partir de l’entrée standard et écrit dans un fichier ici) et sudo. Cela mettra en veille notre système sur le disque (et éteindra l’ordinateur) à condition que nous disposons d’un espace de swap suffisant comme décrit précédemment dans ce guide.

Changer ce script en Suspend-To-RAM / Memory est maintenant facile: échangez simplement le mot disk à mem.

Nous définissons notre sleep.sh script comme suit:

sudo sleep 0.1  # To get auth
xflock4
sleep 3
echo deep | sudo tee /sys/power/mem_sleep
echo mem | sudo tee /sys/power/state

Nous avons franchi l’étape supplémentaire de l’écriture deep à /sys/power/mem_sleep pour être du côté de la sécurité de l’alimentation et pour éviter Idle-To-Suspend. Cela ne fonctionnera que si deep est une option réelle sur votre système (n’oubliez pas d’exécuter cat /sys/power/mem_sleep pour découvrir les modes de veille mémoire, et assurer deep est l’un d’eux). Si deep est déjà sélectionné comme valeur par défaut actuelle, il s’affichera comme [deep].

Enfin, nous pouvons également faire un freeze script comme suit:

sudo sleep 0.1  # To get auth
xflock4
sleep 3
echo freeze | sudo tee /sys/power/state

Notez qu’aucune écriture supplémentaire de s2idle à /sys/power/mem_sleep est nécessaire, car le freeze écrire à /sys/power/state utilise automatiquement s2idle (Suspend-To-Idle). Comme décrit précédemment, nous aurions pu écrire s2idle à /sys/power/mem_sleep puis écrit mem à /sys/power/state au lieu de cela pour obtenir le même résultat, mais cela semble être une manière plus déroutante de le faire.

Les différents états d’alimentation répertoriés dans les scripts ci-dessus, dans l’ordre présenté (disk > mem > freeze) ont le plus d’économies d’énergie au minimum et des niveaux plus élevés placeront l’ordinateur dans un état de veille plus profond.

Il convient également de noter que seul Suspend-To-Disk (disk) fournit l’assurance que si l’alimentation de votre système tombe d’une manière ou d’une autre, votre état enregistré ne sera pas affecté et l’ordinateur pourra reprendre au point où vous l’avez laissé. Cela dit, c’est aussi le plus lent car les E / S disque – à la taille de votre mémoire – sont nécessaires.

Emballer

La possibilité de mettre en veille ou d’hiberner une machine localement ou à distance via la ligne de commande offre une grande flexibilité, à différents niveaux d’économie d’énergie grâce à différents modes de suspension. Les serveurs et les postes de travail peuvent être mis en veille prolongée.

On peut suspendre un ordinateur au repos (s2idle), en mémoire (mem) et sur le disque (disque). Ce guide décrit les différentes manières de le faire, ainsi que la manière dont cela se rapporte au matériel sous-jacent. Les systèmes d’exploitation réguliers, tout en prenant en charge l’hibernation et la mise en veille, n’annoncent pas toujours ou n’exposent pas toujours ces options dans leur interface graphique de bureau.

Savoir comment aller plus loin en ligne de commande nous évite souvent de ne pas être en mesure de mettre en veille ou de mettre en veille une machine du tout, ou de pouvoir mettre en veille ou mettre en veille cette machine à distance. Profitez!

Avis de non-responsabilité: aucun ordinateur n’a été blessé lors des différentes expériences réalisées pour ce guide 🙂

★★★★★