Cómo leer y cambiar el valor de los parámetros del núcleo utilizando SYSCTL

Cómo leer y cambiar el valor de los parámetros del núcleo utilizando SYSCTL

SYSCTL es una utilidad instalada de forma predeterminada en todas las distribuciones modernas de Linux. Se usa tanto para leer y escribir el valor de los parámetros del núcleo en tiempo de ejecución; Los parámetros disponibles son los que figuran en el /Proc pseudo-archilsystem, y específicamente bajo el /proc/sys directorio. En este artículo aprendemos cómo usar esta utilidad, cómo hacer que los cambios persistan un reinicio y cómo cargar la configuración de un archivo "manualmente".

En este tutorial aprenderás:

  • Cómo leer el valor de los parámetros del núcleo
  • Cómo modificar el valor de los parámetros del kernel en tiempo de ejecución
  • Cómo hacer cambios persisten un reinicio
  • Cómo cargar la configuración desde un archivo manualmente
Cómo leer y cambiar el valor de los parámetros del núcleo utilizando SYSCTL

Requisitos y convenciones de software utilizados

Requisitos de software y convenciones de línea de comandos de Linux
Categoría Requisitos, convenciones o versión de software utilizada
Sistema Distribución independiente
Software sysctl
Otro Privilegios de raíz para modificar los parámetros del kernel
Convenciones # - requiere que los comandos de Linux dados se ejecuten con privilegios raíz directamente como un usuario raíz o mediante el uso de sudo dominio
$-Requiere que los comandos de Linux dados se ejecuten como un usuario regular no privilegiado

Lectura de valores del núcleo

El comportamiento del kernel de Linux se puede cambiar modificando el valor de algunos parámetros, incluso en tiempo de ejecución. Los parámetros disponibles son aquellos a los que se puede acceder a través del /Proc pseudo-archilsystem, bajo el /proc/sys directorio. Podemos usar el árbol comandar una idea de su contenido:

$ árbol /proc /sys /proc /sys ├── abi │ └── vsyscall32 ├── cripto │ ├── Cdrom │ │ ├── AutoClose │ │ ├── AutoEject │ │ ├── Check_Media │ │ ├ ├iqu. ─ Max-User-Freq │ ├── I915 │ │ ├── OA_MAX_SAMPLE_RATE │ │ └ └se perf_stream_paraboid │ ├── Mac_hid │ │ ├ ├ ├ ├ │ ├ ├ ├ └ └ │ │ │ │ │ │ │ │ │ │ │ │ RAID │ │ ├── SPEED_LIMIT_MAX │ │ └── Speed_limit_min │ ├── scsi │ │ └── Logging_Level │ └── tty │ └── ldisc_autoload […] 


El resultado del comando anterior se trunca por razones obvias, pero da una idea de lo que estamos hablando. Cuando SYSCTL se invoca con el -a opción (abreviatura de --todo), imprime el valor de todos los parámetros del núcleo disponibles:

$ SYSCTL SYSCTL -A ABI.vSyscall32 = 1 Crypto.fips_enabled = 0 depuración.excepción-trace = 1 depuración.Kprobes-Optimization = 1 dev.CD ROM.autoclose = 1 dev.CD ROM.autoeject = 0 dev.CD ROM.check_media = 0 […] 

Si queremos leer el valor de un parámetro específico, todo lo que tenemos que hacer es invocar sysctl y proporcionar el nombre del parámetro del que queremos verificar el valor como argumento. Por ejemplo, para leer el valor actual de la redada speed_limit_max parámetro, que está escrito en el /proc/sys/dev/raid/speed_limit_max Archivo, ejecutaríamos:

$ sysctl dev.Redada.speed_limit_max dev.Redada.speed_limit_max = 200000 

Cuando usas sysctl En un script, o al usar su salida en una tubería, es posible que deseemos ejecutarlo con el -norte opción, que es la forma corta de (--valores). Esta opción hace que solo el valor actual de un parámetro solicitado sea
regresó cuando se realiza una consulta; se omite el nombre clave:

$ sysctl -n dev.Redada.speed_limit_max 200000 

Modificar los parámetros del núcleo

Así como podemos leer los parámetros del núcleo, podemos cambiar sus valores en tiempo de ejecución usando sysctl. La sintaxis para usar cuando queremos realizar tal acción, es muy simple:

sysctl variable = valor 

Simplemente invocamos el comando y proporcionamos el nombre de la variable y el valor que queremos asignarle. Si bien no necesitamos privilegios elevados para leer el valor de los parámetros del núcleo, necesitamos prefijo el comando con sudo (o ejecutarlo como el usuario raíz directamente) para cambiar sus valores. Solo como ejemplo, supongamos que queremos cambiar el valor de enchufe.CD ROM.autoevalúa y establecerlo en 1; Escribiríamos:

$ sudo sysctl dev.CD ROM.autoeject = 1 

Cuando cambiamos el valor de un parámetro de kernel, si el comando se ejecuta correctamente, el conjunto de valor se muestra a stdout (salida estándar). Como salida del comando utilizado en el ejemplo anterior, veríamos:

enchufe.CD ROM.autoeject = 1 


Tal comportamiento se puede cambiar invocando sysctl con el -Q opción (abreviatura de --tranquilo).

Hacer que los cambios persistan un reinicio

La modificación que hacemos con SYSCTL en tiempo de ejecución no es persistente y se perderá cuando reiniciemos el sistema. Para hacer que los cambios sobrevivan a tal evento, necesitamos escribirlos en un archivo en uno de los directorios dedicados. Que son esos
directorios? En orden de prioridad:

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

Los archivos que alojan la configuración deben tener el .confusión extensión y están ordenados y cargados en el arranque por el systemd-sysctl servicio, en lexicográfico orden, no importa el directorio en el que se coloquen.

Si existe un archivo con el mismo nombre en múltiples directorios, solo se cargará la configuración existente en la colocada en el directorio con la prioridad más alta. Básicamente, esto significa que si queremos anular un archivo por completo, debemos colocar un archivo con el mismo nombre en un directorio con una prioridad más alta; Si queremos cambiar una configuración específica, en su lugar, podríamos elegir escribirlo en un archivo con un nombre que hará que se cargue después de la que se establece originalmente el parámetro en el que se establece originalmente.



El /usr/lib/sysctl.d El directorio está destinado a alojar la configuración de "proveedor", rara vez debemos cambiar su contenido. En la gran mayoría de los casos queremos colocar nuestros archivos dentro del /etc/sysctl.d directorio, que está reservado para los cambios realizados
por el administrador del sistema.

Veamos un ejemplo. Supongamos que queremos cambiar el núcleo mancha valor. Como sabemos, el valor de este parámetro determina con qué frecuencia el kernel de Linux copia el RAM contenido al espacio de intercambio. El rango de valores que se puede asignar a este parámetro se dirige a 0 a 100: Un valor más alto significa un uso de intercambio más frecuente y agresivo. Para cambiar el valor de este parámetro de forma permanente, creamos el /etc/sysctl.d/99-camiseta.confusión archivo; Dentro de eso escribimos:

VM.Swappiness = 1 

Dado que, como dijimos, los archivos se cargan en orden lexicográfico, debido a su nombre, podemos estar seguros de que el archivo se cargará bastante últimamente, por lo que la configuración se aplicará como se esperaba como se esperaba.

Cargue la configuración de un archivo manualmente

Dado que aquí vimos cómo cambiar el valor de los parámetros del núcleo en tiempo de ejecución, y cómo hacer que los cambios persistan un reinicio escribiéndolos en archivos con el .confusión extensión. ¿Qué pasa si queremos cargar configuraciones escritas dentro de un archivo "manualmente", sin la necesidad de reiniciar el sistema y sin recargar el systemd-sysctl servicio? Todo lo que tenemos que hacer es invocar sysctl con el -pag opción (--carga) y pase la ruta del archivo que aloja la configuración como argumento. Solo como ejemplo, supongamos que queremos cargar el contenido del /etc/sysctl.d/99-camiseta.confusión Archivo que creamos en el ejemplo anterior; Corríamos:

$ sudo sysctl -p /etc /sysctl.d/99-camiseta.confusión 

Si SYSCTL se invoca con el -pag opción, pero no se proporcionan argumentos, carga la configuración del /etc/sysctl.confusión archivo (un enlace simbólico que apunta a este archivo, nombrado 99-sysctl.confusión existe en el /etc/sysctl.d directorio).

Conclusiones

En este artículo aprendimos a usar el sysctl utilidad para leer y cambiar el valor de algunos parámetros del núcleo en tiempo de ejecución. También vimos cómo hacer cambios en estos parámetros persistir un reinicio, escribiéndolos en archivos con el .confusión Extensión, que debe colocarse en directorios específicos y cómo cargar la configuración escrita en un archivo "manualmente". Al cambiar el valor de los parámetros del núcleo, podemos ajustar nuestro sistema y hacer que funcione exactamente como necesitamos. Podemos, por ejemplo, como vimos en un tutorial anterior, habilitar todas o algunas de las funciones SYSRQ.

Tutoriales de Linux relacionados:

  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Cosas para instalar en Ubuntu 20.04
  • Mastering Bash Script Loops
  • Mint 20: Mejor que Ubuntu y Microsoft Windows?
  • Cómo optimizar la duración de la batería de la computadora portátil con TLP en Linux
  • Tutorial de depuración de GDB para principiantes
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • ¿Con qué frecuencia tiene que reiniciar su servidor de Linux??
  • Cómo arrancar dual Kali Linux y Windows 10
  • Bucles anidados en guiones Bash