Comment lire et modifier la valeur des paramètres du noyau à l'aide de sysctl

Comment lire et modifier la valeur des paramètres du noyau à l'aide de sysctl

Sysctl est un utilitaire installé par défaut dans toutes les distributions Linux modernes. Il est utilisé à la fois pour lire et écrire la valeur des paramètres du noyau au moment de l'exécution; Les paramètres disponibles sont ceux répertoriés sous le / proc pseudo-filesystème, et spécifiquement sous le / proc / sys annuaire. Dans cet article, nous apprenons à utiliser cet utilitaire, à faire des modifications persistent un redémarrage et à charger les paramètres d'un fichier «manuellement».

Dans ce tutoriel, vous apprendrez:

  • Comment lire la valeur des paramètres du noyau
  • Comment modifier la valeur des paramètres du noyau lors de l'exécution
  • Comment apporter des changements persister un redémarrage
  • Comment charger les paramètres à partir d'un fichier manuellement
Comment lire et modifier la valeur des paramètres du noyau à l'aide de sysctl

Exigences et conventions logicielles utilisées

Exigences logicielles et conventions de ligne de commande Linux
Catégorie Exigences, conventions ou version logicielle utilisée
Système Distribution indépendante
Logiciel sysctl
Autre Privilèges racinaires pour modifier les paramètres du noyau
Conventions # - nécessite que les commandes Linux sont exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande
$ - Exige que les commandes Linux sont exécutées en tant qu'utilisateur non privilégié régulier

Lire les valeurs du noyau

Le comportement du noyau Linux peut être modifié en modifiant la valeur de certains paramètres, même au moment de l'exécution. Les paramètres disponibles sont ceux qui peuvent être accessibles via le / proc pseudo-filesystème, sous le / proc / sys annuaire. Nous pouvons utiliser le arbre commande pour avoir une idée de son contenu:

$ arbre / proc / sys / proc / sys ├fique │ ├fiquement CDrom │ │ ├fique ─ Max-user-freq │ ├── i915 │ │ ├── OA_MAX_Sample_RATE │ │ └fiqueslf_stream_paranoid │ ├fique raid │ │ ├fiquel 


La sortie de la commande ci-dessus est tronquée pour des raisons évidentes, mais elle donne une idée de ce dont nous parlons. Lorsque sysctl est invoqué avec le -un Option, (abréviation pour --tous), il imprime la valeur de tous les paramètres du noyau disponibles:

$ sysctl sysctl -a abi.VSYSCALL32 = 1 crypto.fips_enabled = 0 débogage.exception-trace = 1 débogage.kprobes-optimisation = 1 dev.CD ROM.autoclose = 1 dev.CD ROM.autoeject = 0 dev.CD ROM.check_media = 0 […] 

Si nous voulons lire la valeur d'un paramètre spécifique, tout ce que nous avons à faire est d'invoquer sysctl et fournir le nom du paramètre dont nous voulons vérifier la valeur comme argument. Par exemple, pour lire la valeur actuelle du raid speed_limit_max paramètre, qui est écrit dans le / proc / sys / dev / raid / speed_limit_max Fichier, nous courions:

$ sysctl dev.raid.Speed_limit_max Dev.raid.speed_limit_max = 200000 

Lors de l'utilisation sysctl Dans un script, ou lorsque vous utilisez sa sortie dans un pipeline, nous pouvons vouloir l'exécuter avec le -n Option, qui est la forme courte de (--valeurs). Cette option ne fait que la valeur actuelle d'un paramètre demandé
retourné lorsqu'une requête est effectuée; Le nom de clé est omis:

$ sysctl -n dev.raid.speed_limit_max 200000 

Modification des paramètres du noyau

Tout comme nous pouvons lire les paramètres du noyau, nous pouvons modifier leurs valeurs à l'exécution en utilisant sysctl. La syntaxe à utiliser lorsque nous voulons effectuer une telle action, est très simple:

variable sysctl = valeur 

Nous invoquons simplement la commande et fournissons le nom de la variable et la valeur que nous voulons y attribuer. Bien que nous n'ayons pas besoin de privilèges élevés pour lire la valeur des paramètres du noyau, nous devons préfixer la commande avec sudo (ou l'exécuter directement en tant qu'utilisateur racine) pour modifier leurs valeurs. À titre d'exemple, supposons que nous voulons modifier la valeur de dev.CD ROM.autoeject et le régler sur 1; Nous écrivions:

$ sudo sysctl dev.CD ROM.autoeject = 1 

Lorsque nous modifions la valeur d'un paramètre de noyau, si la commande est exécutée correctement, la valeur définie s'affiche à stdout (sortie standard). En tant que sortie de la commande utilisée dans l'exemple ci-dessus, nous verrions:

dev.CD ROM.autoeject = 1 


Un tel comportement peut être modifié en invoquant Sysctl avec le -q Option (abréviation pour --calme).

Faire des changements persistent un redémarrage

La modification que nous apportons avec Sysctl lors de l'exécution n'est pas persistante et sera perdue lorsque nous redémarrons le système. Pour apporter des modifications à survivre un tel événement, nous devons les écrire dans un dossier dans l'un des répertoires dédiés. Quels sont ces
répertoires? Par ordre de priorité:

  • / etc / sysctl.d
  • / run / sysctl.d
  • / usr / lib / sysctl.d

Les fichiers hébergeant les paramètres doivent avoir le .confli extension et sont triés et chargés au démarrage par le Systemd-Sysctl service, dans lexicographique commande, peu importe le répertoire dans lequel ils sont placés.

Si un fichier avec le même nom existe dans plusieurs répertoires, seuls les paramètres existants dans celui placé dans le répertoire avec la priorité supérieure seront chargés. Cela signifie essentiellement que si nous voulons remplacer complètement un fichier, nous devons placer un fichier avec le même nom dans un répertoire avec une priorité plus élevée; Si nous voulons modifier un paramètre spécifique, nous pourrions plutôt choisir de l'écrire dans un fichier avec un nom qui le fera charger après celui où le paramètre il est initialement réglé dans.



Le / usr / lib / sysctl.d Le répertoire est destiné à héberger des paramètres de «fournisseur», nous devons rarement modifier son contenu. Dans la grande majorité des cas, nous voulons placer nos fichiers à l'intérieur du / etc / sysctl.d répertoire, qui est réservé aux modifications apportées
par l'administrateur système.

Voyons un exemple. Supposons que nous voulons changer le noyau swapposité valeur. Comme nous le savons, la valeur de ce paramètre détermine à quelle fréquence RAM Contenu de l'espace d'échange. La plage de valeurs qui peuvent être attribuées à ce paramètre va à 0 pour 100: Une valeur plus élevée signifie une utilisation d'échange plus fréquente et plus agressive. Pour modifier la valeur de ce paramètre de façon permanente, nous créons le / etc / sysctl.D / 99-Swappiness.confli déposer; À l'intérieur, nous écrivons:

machine virtuelle.swappiness = 1 

Puisque, comme nous l'avons dit, les fichiers sont chargés dans l'ordre lexicographique, en raison de son nom, nous pouvons être sûrs que le fichier sera chargé récemment, et donc le paramètre sera appliqué comme prévu.

Chargez les paramètres à partir d'un fichier manuellement

Puisque ici, nous avons vu comment modifier la valeur des paramètres du noyau au moment de l'exécution, et comment apporter aux modifications persistent un redémarrage en les écrivant dans des fichiers avec le .confli extension. Et si nous voulons charger des paramètres écrits dans un fichier «manuellement», sans avoir besoin de redémarrer le système et sans recharger le Systemd-Sysctl service? Tout ce que nous avons à faire est d'invoquer Sysctl avec le -p option (--charger) et passer le chemin du fichier hébergeant les paramètres comme argument. Comme exemple, supposons que nous voulons charger le contenu du / etc / sysctl.D / 99-Swappiness.confli fichier que nous avons créé dans l'exemple précédent; Nous courions:

$ sudo sysctl -p / etc / sysctl.D / 99-Swappiness.confli 

Si sysctl est invoqué avec le -p Option, mais aucun argument n'est fourni, il charge les paramètres de la / etc / sysctl.confli fichier (un lien symbolique qui pointe vers ce fichier, nommé 99-SYSCTL.confli existe dans le / etc / sysctl.d annuaire).

Conclusions

Dans cet article, nous avons appris à utiliser le sysctl Utilité pour lire et modifier la valeur de certains paramètres du noyau lors de l'exécution. Nous avons également vu comment apporter des modifications à ces paramètres persistent un redémarrage, en les écrivant dans des fichiers avec le .confli Extension, qui devrait placer dans des répertoires spécifiques, et comment charger les paramètres écrits dans un fichier «manuellement». En modifiant la valeur des paramètres du noyau, nous pouvons modifier notre système et le faire fonctionner exactement comme nous avons besoin. Nous pouvons, par exemple, comme nous l'avons vu dans un tutoriel précédent, activer toutes ou certaines fonctions sysrq.

Tutoriels Linux connexes:

  • Une introduction à l'automatisation Linux, des outils et des techniques
  • Choses à installer sur Ubuntu 20.04
  • Masterring Bash Script Loops
  • Mint 20: Mieux que Ubuntu et Microsoft Windows?
  • Comment optimiser la durée de vie de la batterie de l'ordinateur portable avec TLP sur Linux
  • Tutoriel de débogage GDB pour les débutants
  • Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
  • À quelle fréquence devez-vous redémarrer votre serveur Linux?
  • Comment doubler Kali Linux et Windows 10
  • Boucles imbriquées dans les scripts bash