El kernel de Linux • Cuando se habla de Linux, se hace referencia al sistema operativo GNU/Linux. • GNU (Gnu’s Not Unix) provee el código abierto, equivalente a los comandos más comunes en Unix, como ls, cp o passwd. • Linux es el núcleo del sistema operativo, el kernel, el cual administra todos los aspectos del sistema que ejecuta. • Las funciones clave del kernel de Linux incluye: • Administración del arranque del sistema operativo, proceso, memoria, sistema de archivos , redes y manejadores de dispositivos. • Aceptación de comandos de usuario y administración de procesos que se llevan a cabo mediante esos comandos. El directorio /proc Los dispositivos hardware están disponibles a través de ficheros especiales en el directorio /dev, mientras que la información sobre esos dispositivos se puede encontrar bajo el directorio /sys. El directorio /proc contiene un pseudo sistema de archivos el cual muestra la información de los procesos en ejecución. En el directorio /proc existen directorios numerados cuyos valores equivales al identificador del proceso (PID) en ejecución. Debido a que el proceso /sbin /init es siempre el primer proceso, tiene un PID de 1 y la información sobre el proceso /sbin /init se pueden encontrar en el directorio /proc /1. El directorio /proc Dentro de /proc se puede encontrar información de la ejecución del kernel: • El archivo /proc/cmdline contiene toda la información del inicio del kernel. • El archivo /proc/meminfo contiene información sobre el uso de la memoria del kernel. • El archivo /proc/modules tiene una lista de los módulos cargados actualmente en el kernel. Los archivos /proc no pueden ser modificados (incluso por root). /proc/sys/net/ipv4
El directorio /proc
Por ejemplo, el directorio /proc/sys/net/ipv4 contiene un
archivo denominado icmp_echo_ignore_all. Si ese archivo contiene un cero (0), como lo hace normalmente, entonces el sistema responderá a las solicitudes icmp. Si ese archivo contiene un uno (1), entonces el sistema no responderá a las solicitudes icmp. Jerarquía de procesos Cuando el kernel finaliza el proceso de arranque, se inicio el proceso /sbin/init al cual se le asigna el PID 1, a partir de aquí se van generando otros procesos a los cuales se les asigna un PID en orden secuencial. Los procesos generan a su vez otras procesos, y cuando esto ocurre se denomina proceso padre e hijo respectivamente. A los procesos padre se les puede asignar la etiqueta PPID. Cuando el sistema ha estado funcionando durante mucho tiempo y se alcanza el número máximo de PID, que se puede chequear en /proc/sys/kernel/pid_max, el sistema realiza un “roll over” y asigna valores bajos que puedan estar disponibles. Si se ejecuta el comando pstree se mostrará un árbol de procesos y se podrá observar la jerarquía de procesos padre e hijo. Comando ps (procesos) Otra forma de ver los procesos es con el comando ps, el cual mostrará los procesos que se están ejecutando. Si se ejecuta ps con la opción --forest, se mostrará la relación padre e hijo que se tenga con los procesos (similar a pstree). Para poder ver todos los procesos del sistema se puede ejecutar el comando ps aux o el comando ps -ef. Con la ejecución de estos comandos se pueden llegar a tener cientos de procesos, pero se podría filtrar con el comando head para que se visualice los 10 primeros. También se puede utilizar el comando grep para filtrar con una palabra clave. Como root se puede visualizar los procesos de usuario a través de ps –u username. Comando top A diferencia del comando ps que muestra los procesos que se están ejecutando en el momento el comando top realiza una actualización periódica de los procesos que se están ejecutando. La salida del comando top ordena los procesos por el porcentaje de uso del CPU, con los valores más altos en primer lugar. A través del comando top se pueden evaluar los procesos que se ejecutan por lapsos de tiempo demasiado largos el administrador tiene la posibilidad de matar procesos presionando la tecla k y especificando el PID del proceso, o a su vez se puede modificar la prioridad del proceso presionando la tecla r (valores de -20 a 19) En la primera línea del comando top se puede observar la carga del sistema en diferentes lapsos de tiempo(5, 10, 15 min).