Comment configurer les paramètres du noyau à l'aide de la commande sysctl
Vous pouvez configurer plusieurs paramètres ou réglages de Linux (le noyau) pour contrôler son comportement, soit au démarrage, soit à la demande pendant que le système est en cours d'exécution. sysctl est un utilitaire de ligne de commande largement utilisé pour modifier ou configurer les paramètres du noyau lors de l'exécution. Vous pouvez trouver les réglages du noyau répertoriés dans le répertoire /proc/sys/.
Il est alimenté par procfs (système de fichiers proc), un pseudo système de fichiers sous Linux et d'autres systèmes d'exploitation de type Unix qui fournit une interface aux structures de données du noyau. Il présente des informations sur les processus et des informations supplémentaires sur le système.
Voici 10 exemples de commandes sysctl utiles que vous pouvez utiliser lors de l'administration d'un système Linux en cours d'exécution. Notez que vous avez besoin des privilèges root pour exécuter la commande sysctl, sinon, utilisez la commande sudo lors de son invocation.
Exemples de commandes sysctl sous Linux
Dans ce guide, nous expliquerons 10 exemples de commandes pratiques sysctl que vous pouvez utiliser sur un système Linux.
1. Lister tous les paramètres du noyau sous Linux
Pour répertorier tous les paramètres de noyau actuellement disponibles, exécutez la commande sysctl avec l'indicateur -a
ou --all
comme indiqué.
$ sudo sysctl -a OR $ sudo sysctl --all
Les variables sont affichées dans ce format :
<tunable class>.<tunable> = <value>
Par exemple,
kernel.ostype = Linux

3. Lister tous les noms de variables du noyau
Pour imprimer uniquement les noms de variables sans leurs valeurs, utilisez l'option -N
comme indiqué.
$ sudo sysctl -a -N

3. Trouver des variables de noyau spécifiques sous Linux
Pour trouver une variable spécifique, vous pouvez filtrer la sortie de sysctl via la commande grep, par exemple, pour filtrer toute variable associée à la gestion de la mémoire, vous pouvez exécuter ce qui suit commande:
$ sudo sysctl -a | grep memory OR $ sudo sysctl --all | grep memory

4. Lister toutes les variables du noyau, y compris les obsolètes
La commande sysctl affiche également les variables obsolètes ainsi que la liste de toutes les variables disponibles en utilisant le drapeau --deprecated
comme indiqué.
$ sudo sysctl -a --deprecated OR $ sudo sysctl -a --deprecated | grep memory
5. Répertorier la valeur de la variable de noyau spécifique
Pour lire une variable sysctl et ses valeurs, spécifiez le nom de la variable comme argument pour les commandes sysctl comme suit. Cet exemple montre comment lire la variable kernel.ostype
.
$ sudo sysctl kernel.ostype kernel.ostype = Linux
6. Écrire temporairement la variable du noyau
Pour écrire temporairement des variables, spécifiez simplement la variable dans ce format.
<tunable class>.<tunable>=<value>
L'exemple suivant montre comment augmenter la taille maximale de la file d'attente de réception, qui stocke les trames extraites de la mémoire tampon en anneau de la NIC (Carte d'interface réseau), une fois qu'elles sont reçues du réseau. La taille de la file d'attente peut être modifiée à l'aide de la variable net.core.netdev_max_backlog
comme indiqué.
$ sudo sysctl net.core.netdev_max_backlog $ sudo sysctl net.core.netdev_max_backlog=1200 $ sudo sysctl net.core.netdev_max_backlog

7. Écrire la variable du noyau en permanence
sysctl peut également écrire des variables de manière permanente dans un fichier de configuration. Pour ce faire, utilisez l'option -w
et spécifiez le fichier de configuration auquel la variable et sa valeur seront ajoutées, dans ce cas, il s'agit de /etc/sysctl.conf , le fichier de configuration sysctl par défaut :
$ sudo sysctl -w net.core.netdev_max_backlog=1200 >> /etc/sysctl.conf
Pour écrire des fichiers de manière permanente dans une personnalisation, spécifiez l'emplacement du fichier comme suit. Parfois, vous pouvez échouer à créer un fichier à des emplacements particuliers même lorsque vous appelez la commande sysctl à l'aide de la commande sudo.
Dans ce cas, passez au compte root (si vous avez les privilèges) et exécutez à nouveau la commande comme indiqué.
$ sudo sysctl -w net.core.netdev_max_backlog=1200 >> /etc/sysctl.d/10-test-settings.conf $ sudo su # sysctl -w net.core.netdev_max_backlog=1200 >> /etc/sysctl.d/10-test-settings.conf

Vous pouvez également créer le nouveau fichier de configuration dans le répertoire /etc/sysctl.d/ comme indiqué :
$ sudo vim /etc/sysctl.d/10-test-settings.conf
Ajoutez ensuite les paramètres du noyau, un par ligne, comme indiqué.
net.core.netdev_max_backlog = 1200 user.max_net_namespaces = 63067 vm.overcommit_memory = 0
Enregistrez ensuite le fichier et fermez-le. Pour charger les paramètres du fichier personnalisé que vous venez de créer, utilisez le drapeau -p
ou --load
.
$ sudo sysctl -p /etc/sysctl.d/10-test-settings.conf OR $ sudo sysctl --load= /etc/sysctl.d/10-test-settings.conf
8. Recharger les variables sysctl.conf sous Linux
Pour recharger les paramètres de tous les fichiers de configuration système sans redémarrer, exécutez la commande suivante.
$ sudo sysctl --system
La commande ci-dessus lira tous les fichiers de configuration système de ces répertoires, dans cet ordre :
/run/sysctl.d/*.conf /etc/sysctl.d/*.conf /usr/local/lib/sysctl.d/*.conf /usr/lib/sysctl.d/*.conf /lib/sysctl.d/*.conf /etc/sysctl.conf
9. Recharger les paramètres à partir des fichiers de configuration personnalisés
Vous pouvez également recharger les paramètres de variable à partir d'un fichier de configuration sysctl personnalisé, comme indiqué.
$ sudo sysctl -p/etc/sysctl.d/10-test-settings.conf OR $ sudo sysctl --load= /etc/sysctl.d/10-test-settings.conf
10. Recharger les paramètres qui correspondent au modèle
Pour appliquer uniquement les paramètres qui correspondent à un certain modèle, utilisez le -r
ou --pattern
comme suit. Notez que le modèle utilise une syntaxe d'expression régulière étendue, voici quelques exemples :
$ sudo sysctl --system --pattern '^net.ipv6' $ sudo sysctl --system -r memory

Dans ce guide, nous avons expliqué 10 exemples de commande sysctl que vous pouvez utiliser pour gérer un système Linux en cours d'exécution. Pour plus d'informations, lisez la page de manuel sysctl (man sysctl).