Cómo leer y cambiar el valor de los parámetros del núcleo utilizando SYSCTL
- 1511
- 147
- Adriana Tórrez
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
Requisitos y convenciones de software utilizados
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