
Linux es un sistema operativo sorprendente y poderoso. Más específicamente, el kernel de Linux es la fuente de muchos de sus superpoderes. He estado usando Linux durante 25 años y he usado muchas versiones del kernel de Linux. Incluso compilé el kernel una o dos veces en clase, algunas veces solo para divertirme.
[ Download now: Advanced Linux commands cheat sheet. ]
La mayoría de los usuarios o incluso los administradores del sistema no necesitan compilar el núcleo. En la mayoría de las distribuciones, la compilación predeterminada está bien para la mayoría de los casos de uso. Pero a veces se requieren algunos ajustes. La buena noticia es que el núcleo se puede modificar fácilmente sin volver a compilar o incluso reiniciar.
Este artículo no pretende divulgar en detalle todos los datos del núcleo disponibles para su visualización o modificación.Este es un tributo a una increíble pieza de software. 31 aniversario.
¿Qué es el sistema de archivos /proc?
Este /proc
El sistema de archivos es uno de los componentes más críticos del kernel. Es un sistema de archivos virtual que existe solo en la memoria.Este /proc
sistema de archivos por Estándar de capas del sistema de archivos de Linux (FHS) donde Linux almacena información sobre el sistema, el kernel y todos los procesos que se ejecutan en el host. Está destinado a ser el lugar donde el kernel expone información sobre sí mismo para facilitar a los programadores, desarrolladores y administradores de sistemas el acceso a los datos sobre el sistema.
La recopilación de estos datos no afecta el rendimiento general del host Linux. El kernel de Linux está diseñado para recopilar y almacenar continuamente datos de rendimiento a los que se puede acceder y mostrar mediante todas y cada una de las herramientas de supervisión del rendimiento. Estas herramientas acceden a esos datos para leerlos, luego los manipulan y los muestran en un formato significativo.Debido a que estos datos ya están almacenados en /proc
sistema de archivos, lo que evita llamadas a funciones complejas y lentas dentro del kernel.
Algunos datos están en /proc
El sistema de archivos se utiliza para ajustar el kernel. Los valores en estos archivos se pueden cambiar fácilmente con herramientas Linux simples y familiares.
Ver datos
Cuando se utiliza como una ventana al estado del sistema operativo y su vista del sistema y el hardware, el núcleo proporciona un fácil acceso a casi cualquier información que desee como administrador del sistema.Todas las herramientas geniales que usan los administradores de sistemas para acceder a los datos /proc
El sistema de archivos se basa en el kernel para ver el estado del sistema operativo y obtener los datos que necesita.
[ Boost your Linux skills. Get the guide to installing applications on Linux. ]
Primero mire algunos datos disponibles.Primero, haz /proc
El directorio de trabajo actual (PWD) y una lista de los contenidos. Muchos de ellos son directorios, otros son archivos. Yo uso el emulador de terminal Konsole. El color predeterminado para los directorios es azul y los archivos tienen el color del texto del terminal, que configuré en ámbar. Los enlaces simbólicos son cian.
Todos los directorios numéricos representan el ID de proceso (PID) de un proceso y contienen datos que el kernel necesita para administrar ese proceso. A diferencia de los directorios con nombre, los archivos con nombre contienen datos asociados con el nombre del archivo. Un directorio con nombre normalmente contiene una serie de archivos y subdirectorios relacionados con el nombre del directorio.
un ejemplo es stat
documento. Este archivo contiene estadísticas relacionadas con la CPU del sistema.puedes usarlo cat
comando para ver el archivo. Haga esto varias veces, o use el siguiente comando como raíz para ver cómo cambia el archivo:
# watch cat /proc/stat
Este watch
El comando por defecto repite el comando cada dos segundos hasta que lo use Ctrl + C Busca un avance. También puede especificar un intervalo diferente. Lea la página del manual para obtener esa información.
Otro documento interesante es proc/meminfo
Intenta ver eso durante unos minutos.Todas mis herramientas favoritas de determinación de problemas y monitoreo utilizan /proc
Obtenga sus datos.
mira eso free
comando, por ejemplo:
# free
total used free shared buff/cache available
Mem: 32726880 727108 31104776 1560 894996 31610372
Swap: 16777208 0 16777208
El siguiente comando muestra el resultado. free
comando y meminfo
Archivar al mismo tiempo. Asegúrese de que las comillas simples y dobles sean correctas.línea #
La notación proporciona un poco de separación visual entre la salida de los dos comandos, brindándole suficientes señales visuales cuando las necesite. Lo he acortado aquí para que todo quepa en una sola línea.
# watch 'free ; echo "###########" ; cat /proc/meminfo | head -20'
La interpretación de la salida de datos de estos comandos está más allá del alcance de este artículo, pero se puede encontrar en la Sección 1.14, /proc página descrita por LFSHexistir Proyecto de documentación de Linux sitio web.
Este man 5 proc
La pagina tambien tiene una buena descripcion de todo /proc
documento.
Este free
El comando es solo una de las muchas herramientas que le permiten ver el estado del kernel en ejecución en tiempo real.
Otros que me gustan son top
, htop
y glances
, todos los cuales muestran una vista completa del sistema en ejecución. Use diseños ligeramente diferentes y diferentes opciones para configurar cómo se muestran los datos, todos los cuales pueden mostrar el uso de la memoria y el intercambio, el uso individual y total de la CPU, una lista de los procesos del sistema y del usuario, y datos sobre cada proceso, como la memoria, el uso de la CPU. , tiempo de ejecución total del proceso, PID e ID del proceso principal (PPID).
Estas tres herramientas, junto con renice
comando, también puede renice o matar un proceso en ejecución.La modificación de un proceso cambia los datos en el proceso. /proc/PID/stat
documento. Los datos en este archivo son complejos y los editores no pueden escribir ni redirigir el archivo, por lo que se requiere una herramienta Renice disponible.
Otras herramientas que uso regularmente son lsblk
, iptop
, lsusb
, lspci
y otras herramientas relacionadas para enumerar y administrar hardware.Cualquiera de las muchas herramientas que administran procesos, memoria, redes, hardware adicional y todo lo demás que se usa /proc
El sistema de archivos hace esto.
Cambiar el núcleo en ejecución
Este /proc
El sistema de archivos también está diseñado para proporcionar acceso para modificar muchos valores de configuración si es necesario para permitirle modificar un sistema en ejecución sin reiniciar después del cambio.
[ Download now: A sysadmin’s guide to Bash scripting. ]
Lo primero que necesitaba modificar en el host Linux utilizado para el enrutador era convertirlo en un enrutador.Esto se hace configurando el contenido del archivo /proc/sys/net/ipv4/ip_forward
a 1
Hay varias formas de cambiar las variables de ajuste del kernel, todas las cuales simplemente cambian el /proc
Sistema de archivos.
Los primeros dos métodos son solo temporales y deben realizarse después de cada reinicio.
Primero, puedo usar el comando:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Este sysctl
El comando hace lo mismo: establece el valor de ese archivo en 1:
# sysctl -w net.ipv4.ip_forward = 1
Puede comprobar el valor de cualquier archivo:
# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
o:
# cat sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
Pero todos estos cambios son solo temporales, se restablecen a los valores predeterminados en cada arranque.
hacer cambios permanentes
Es muy fácil hacer que estos cambios sean permanentes.Simplemente agregue la siguiente línea a /etc/sysctl.conf
archivo o a un nuevo archivo /etc/sysctl.d
Estos archivos se leen y se utilizan para configurar los parámetros del kernel en el momento del arranque. Puede ver algunas otras opciones del kernel que configuré para satisfacer mis necesidades en este archivo:
################################################################################ # Local-sysctl.conf #
# #
# Local kernel option settings. #
# Install this file in the /etc/sysctl.d directory. #
# #
# Use the command: sysctl -p /etc/sysctl.d/local-sysctl.conf to activate. #
# #
################################################################################
################################################################################
# Local Network settings - Specifically to disable IPV6 #
################################################################################
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
################################################################################
# And to make this a router #
################################################################################
net.ipv4.ip_forward = 1
################################################################################
# Virtual Memory Swappiness #
################################################################################
# Set swappiness
vm.swappiness = 13
Para obtener más detalles sobre cómo realizar estas tareas, consulte mi artículo de Opensource.com, ¿Cómo desactivo IPv6 en Linux?.
pensamientos finales
Este /proc
El sistema de archivos es el «único punto de verdad» (SPOT) para obtener información sobre el sistema en ejecución y cambiar las variables de ajuste del kernel. Lo uso mucho, directa o indirectamente, con las utilidades habituales de GNU y otras herramientas que ya están disponibles en todas las distribuciones de Linux.
La capacidad de ajustar el kernel de Linux en tiempo de ejecución es uno de los aspectos más poderosos del uso de Linux. Puede cambiar los parámetros del kernel en tiempo de ejecución sin reiniciar.