Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Roadmap
    • Contáctenos
  • LPI.org
4.3 Lección 2
Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto
1.1 Los sistemas operativos populares y la evolución de Linux
  • 1.1 Lección 1
1.2 Principales aplicaciones de código abierto
  • 1.2 Lección 1
1.3 Software de Código Abierto y las licencias
  • 1.3 Lección 1
1.4 Destrezas TIC y el trabajo con Linux
  • 1.4 Lección 1
Tema 2: Encontrando el camino en un sistema Linux
2.1 Aspectos básicos de la línea de comandos
  • 2.1 Lección 1
  • 2.1 Lección 2
2.2 Uso de la línea de comandos para obtener ayuda
  • 2.2 Lección 1
2.3 Uso de directorios y listado de archivos
  • 2.3 Lección 1
  • 2.3 Lección 2
2.4 Crear, mover y borrar archivos
  • 2.4 Lección 1
Tema 3: El poder de la línea de comandos
3.1 Archivar ficheros desde la línea de comandos
  • 3.1 Lección 1
3.2 Buscar y extraer datos de los ficheros
  • 3.2 Lección 1
  • 3.2 Lección 2
3.3 Crear un script a partir de una serie de comandos
  • 3.3 Lección 1
  • 3.3 Lección 2
Tema 4: El sistema operativo Linux
4.1 La elección del sistema operativo
  • 4.1 Lección 1
4.2 Conocer el hardware del ordenador
  • 4.2 Lección 1
4.3 Donde los datos se almacenan
  • 4.3 Lección 1
  • 4.3 Lección 2
4.4 Tu ordenador en la red
  • 4.4 Lección 1
Tema 5: Seguridad y sistema de permisos de archivos
5.1 Seguridad básica e identificación de tipos de usuarios
  • 5.1 Lección 1
5.2 Creating Users and Groups
  • 5.2 Lección 1
5.3 Gestión de los permisos y la propiedad de los archivos
  • 5.3 Lección 1
5.4 Directorios y archivos especiales
  • 5.4 Lección 1
How to get certified
  1. Tema 4: El sistema operativo Linux
  2. 4.3 Donde los datos se almacenan
  3. 4.3 Lección 2

4.3 Lección 2

Certificación:

Linux Essentials

Versión:

1.6

Tema:

4 El sistema operativo Linux

Objetivo:

4.3 Donde se almacenan los datos

Lección:

2 de 2

Introducción

Después de explorar los programas y sus archivos de configuración, en esta lección aprenderemos cómo se ejecutan los comandos como procesos. Del mismo modo comentaremos sobre la mensajería del sistema, el uso del "kernel ring buffer" y cómo la llegada de systemd y su daemon  — journald — cambió las formas en que se habían hecho las cosas con respecto al registro del sistema.

Procesos

Cada vez que un usuario emite un comando, se ejecuta un programa y se generan uno o más procesos.

Los procesos existen en una jerarquía. Después de que el kernel se carga en la memoria durante el arranque, se inicia el primer proceso que a su vez, inicia otros procesos también pueden iniciar otros procesos. Cada proceso tiene un identificador único (PID) y un identificador de proceso padre (PPID). Estos son números enteros positivos que se asignan en orden secuencial.

Explorando procesos dinámicamente: top

Puede obtener una lista dinámica de todos los procesos en ejecución con el comando top:

$ top

top - 11:10:29 up  2:21,  1 user,  load average: 0,11, 0,20, 0,14
Tasks:  73 total,   1 running,  72 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,3 sy,  0,0 ni, 99,7 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem :  1020332 total,   909492 free,    38796 used,    72044 buff/cache
KiB Swap:  1046524 total,  1046524 free,        0 used.   873264 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
   436 carol     20   0   42696   3624   3060 R  0,7  0,4   0:00.30 top
     4 root      20   0       0      0      0 S  0,3  0,0   0:00.12 kworker/0:0
   399 root      20   0   95204   6748   5780 S  0,3  0,7   0:00.22 sshd
     1 root      20   0   56872   6596   5208 S  0,0  0,6   0:01.29 systemd
     2 root      20   0       0      0      0 S  0,0  0,0   0:00.00 kthreadd
     3 root      20   0       0      0      0 S  0,0  0,0   0:00.02 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 kworker/0:0H
     6 root      20   0       0      0      0 S  0,0  0,0   0:00.00 kworker/u2:0
     7 root      20   0       0      0      0 S  0,0  0,0   0:00.08 rcu_sched
     8 root      20   0       0      0      0 S  0,0  0,0   0:00.00 rcu_bh
     9 root      rt   0       0      0      0 S  0,0  0,0   0:00.00 migration/0
    10 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 lru-add-drain
    (...)

Como vimos anteriormente top también puede brindarnos información sobre el consumo de memoria y CPU del sistema, así como para cada proceso.

top le permite al usuario cierta interacción.

Por defecto, la salida se ordena por el porcentaje de tiempo de CPU utilizado por cada proceso en orden descendente. Este comportamiento puede modificarse presionando las siguientes teclas desde top:

M

Ordenar por uso de memoria.

N

Ordenar por número de identificación del proceso.

T

Ordenar por tiempo de ejecución.

P

Ordenar por porcentaje de uso de CPU.

Para cambiar entre orden descendente/ascendente simplemente presione R.

Tip

Una versión más elegante y fácil de usar en lugar de top es htop. Otra alternativa, quizás más exhaustiva es atop. Si aún no están instalados en su sistema, se recomienda que use su administrador de paquetes para instalarlos y probarlos.

Un Snapshot de los procesos: ps

Otro comando muy útil para obtener información sobre los procesos es ps. Mientras que top proporciona información dinámica, el comando ps es estática.

Si se invoca sin opciones la salida de ps es bastante discreta y se relaciona solo con los procesos adjuntos al shell actual:

$ ps
  PID TTY          TIME CMD
 2318 pts/0    00:00:00 bash
 2443 pts/0    00:00:00 ps

La información que se muestra tiene que ver con el identificador de proceso (PID), el terminal en el que se ejecuta el proceso (TTY), el tiempo de CPU tomado por el proceso (TIME) y el comando que inició el proceso(CMD).

Un modificador útil para ps es -f que muestra la lista de formato completo:

$ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
carol     2318  1682  0 08:38 pts/1    00:00:00 bash
carol     2443  2318  0 08:46 pts/1    00:00:00 ps -f

En combinación con otros modificadores, -f muestra la relación entre los procesos padre e hijo:

$ ps -uf
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
carol       2318  0.0  0.1  21336  5140 pts/1    Ss   08:38   0:00 bash
carol       2492  0.0  0.0  38304  3332 pts/1    R+   08:51   0:00  \_ ps -uf
carol       1780  0.0  0.1  21440  5412 pts/0    Ss   08:28   0:00 bash
carol       2291  0.0  0.7 305352 28736 pts/0    Sl+  08:35   0:00  \_ emacs index.en.adoc -nw
(...)

Del mismo modo ps puede mostrar el porcentaje de memoria utilizada cuando se invoca con el modificador -v:

$ ps -v
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
 1163 tty2     Ssl+   0:00      1    67 201224 5576  0.1 /usr/lib/gdm3/gdm-x-session (...)
 (...)
Note

Otro comando visualmente atractivo que muestra la jerarquía de procesos es pstree. Este ya esta incluído con todas las distribuciones principales.

Información del proceso en el directorio /proc

Ya hemos visto el sistema de archivos /proc. Este incluye un subdirectorio numerado para cada proceso en ejecución en el sistema (el número es el PID del proceso):

carol@debian:~# ls /proc
1    108  13   17   21   27   354  41   665  8    9
10   109  14   173  22   28   355  42   7    804  915
103  11   140  18   23   29   356  428  749  810  918
104  111  148  181  24   3    367  432  75   811
105  112  149  19   244  349  370  433  768  83
106  115  15   195  25   350  371  5    797  838
107  12   16   2    26   353  404  507  798  899
(...)

Por lo tanto, toda la información sobre un proceso particular se incluye dentro de su directorio. Hagamos una lista de los contenidos del primer proceso, aquel cuyo PID es 1 (la salida se ha truncado para facilitar la lectura):

# ls /proc/1/
attr        cmdline          environ  io        mem	      ns
autogroup   comm             exe      limits    mountinfo numa_maps
auxv        coredump_filter  fd       loginuid  mounts    oom_adj
...

Puede verificar — por ejemplo — el ejecutable del proceso:

# cat /proc/1/cmdline; echo
/sbin/init

Como puede observar, el binario que inició la jerarquía de procesos fue /sbin/init.

Note

Los comandos pueden ser concatenados con el punto y coma (;). El objetivo del comando echo después del "punto y coma" es proporcionar una nueva línea. Intenta ejecutar simplemente cat /proc/1/cmdline para ver la diferencia.

Carga del sistema

Cada proceso puede potencialmente consumir recursos del sistema. La llamada carga del sistema intenta agregar la carga general del sistema en un solo indicador numérico. Puede ver la carga actual con el comando uptime:

$ uptime
 22:12:54 up 13 days, 20:26,  1 user,  load average: 2.91, 1.59, 0.39

Los tres últimos dígitos indican el promedio de carga del sistema para el último minuto (2.91), los últimos cinco minutos (1.59) y los últimos quince minutos (0.39).

Cada uno de estos números indica cuántos procesos estaban esperando los recursos de la CPU o las operaciones de entrada/salida para completar. Esto significa que estos procesos estaban listos para ejecutarse si hubieran recibido los recursos respectivos.

Registro del sistema y mensajería del sistema

Tan pronto como el núcleo y los procesos comienzan a ejecutarse y comunicarse entre sí, se produce una gran cantidad de información. La mayor parte se envía a archivos: los llamados archivos de registro o simplemente logs.

Sin iniciar sesión, la búsqueda de un evento que sucedió en un servidor daría mucho dolor de cabeza a los administradores de sistemas, de ahí la importancia de tener una forma estandarizada y centralizada de realizar un seguimiento de los eventos del sistema. Además, los registros son determinantes y reveladores cuando se trata de resolución de problemas y seguridad, así como fuentes de datos confiables para comprender las estadísticas del sistema y hacer predicciones de tendencias.

Iniciar sesión con el demonio syslog

Tradicionalmente, los mensajes del sistema han sido gestionados por la instalación del registro estándar — syslog — o cualquiera de sus derivados — syslog-ng o rsyslog. El daemon de registro recopila mensajes de otros servicios o programas y los almacena en archivos de registro, generalmente en /var/log. Sin embargo, algunos servicios se encargan de sus propios registros (por ejemplo, el servidor web Apache HTTPD). Del mismo modo, el kernel de Linux utiliza el "ring buffer" en memoria para almacenar sus mensajes de registro.

Archivos de registro en /var/log

Debido a que los registros son datos que varían con el tiempo, normalmente se encuentran en /var/log.

Si explora /var/log se dará cuenta de que los nombres de los registros son, hasta cierto punto, bastante explicativos. Algunos ejemplos incluyen:

/var/log/auth.log

Almacena información sobre la autenticación.

/var/log/kern.log

Almacena información del kernel.

/var/log/syslog

Almacena información del sistema.

/var/log/messages

Almacena datos del sistema y de algunas aplicaciones.

Note

El nombre exacto y el contenido de los archivos de registro pueden variar según las distribuciones de Linux.

Accediendo a archivos de registro

Cuando explore archivos de registro, recuerde ser root (si no tiene permisos de lectura) y use un localizador como less;

# less /var/log/messages
Jun  4 18:22:48 debian liblogging-stdlog:  [origin software="rsyslogd" swVersion="8.24.0" x-pid="285" x-info="http://www.rsyslog.com"] rsyslogd was HUPed
Jun 29 16:57:10 debian kernel: [    0.000000] Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.130-2 (2018-10-27)
Jun 29 16:57:10 debian kernel: [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-8-amd64 root=/dev/sda1 ro quiet

Alternativamente, puede usar tail con el modificador -f para leer los mensajes más recientes del archivo y mostrar dinámicamente nuevas líneas a medida que se agregan:

# tail -f /var/log/messages
Jul  9 18:39:37 debian kernel: [    2.350572] RAPL PMU: hw unit of domain psys 2^-0 Joules
Jul  9 18:39:37 debian kernel: [    2.512802] input: VirtualBox USB Tablet as /devices/pci0000:00/0000:00:06.0/usb1/1-1/1-1:1.0/0003:80EE:0021.0001/input/input7
Jul  9 18:39:37 debian kernel: [    2.513861] Adding 1046524k swap on /dev/sda5.  Priority:-1 extents:1 across:1046524k FS
Jul  9 18:39:37 debian kernel: [    2.519301] hid-generic 0003:80EE:0021.0001: input,hidraw0: USB HID v1.10 Mouse [VirtualBox USB Tablet] on usb-0000:00:06.0-1/input0
Jul  9 18:39:37 debian kernel: [    2.623947] snd_intel8x0 0000:00:05.0: white list rate for 1028:0177 is 48000
Jul  9 18:39:37 debian kernel: [    2.914805] IPv6: ADDRCONF(NETDEV_UP): enp0s3: link is not ready
Jul  9 18:39:39 debian kernel: [    4.937283] e1000: enp0s3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX
Jul  9 18:39:39 debian kernel: [    4.938493] IPv6: ADDRCONF(NETDEV_CHANGE): enp0s3: link becomes ready
Jul  9 18:39:40 debian kernel: [    5.315603] random: crng init done
Jul  9 18:39:40 debian kernel: [    5.315608] random: 7 urandom warning(s) missed due to ratelimiting

Encontrará la salida en el siguiente formato:

  • Timestamp

  • Nombre de host del que proviene el mensaje

  • Nombre del programa/servicio que generó el mensaje

  • El PID del programa que generó el mensaje

  • Descripción de la acción

La mayoría de los archivos de registro están escritos en texto plano; sin embargo, algunos pueden contener datos binarios, como es el caso de /var/log/wtmp que almacena datos relevantes para inicios de sesión exitosos. Puede usar el comando file para determinar cuál es el caso:

$ file /var/log/wtmp
/var/log/wtmp: dBase III DBT, version number 0, next free block index 8

Estos archivos se leen normalmente mediante comandos especiales. El comando last se usa para interpretar los datos en /var/log/wtmp:

$ last
carol    tty2         :0               Thu May 30 10:53   still logged in
reboot   system boot  4.9.0-9-amd64    Thu May 30 10:52   still running
carol    tty2         :0               Thu May 30 10:47 - crash  (00:05)
reboot   system boot  4.9.0-9-amd64    Thu May 30 09:11   still running
carol    tty2         :0               Tue May 28 08:28 - 14:11  (05:42)
reboot   system boot  4.9.0-9-amd64    Tue May 28 08:27 - 14:11  (05:43)
carol    tty2         :0               Mon May 27 19:40 - 19:52  (00:11)
reboot   system boot  4.9.0-9-amd64    Mon May 27 19:38 - 19:52  (00:13)
carol    tty2         :0               Mon May 27 19:35 - down   (00:03)
reboot   system boot  4.9.0-9-amd64    Mon May 27 19:34 - 19:38  (00:04)
Note

Similar a /var/log/wtmp, /var/log/btmp almacena información sobre intentos fallidos de inicio de sesión y el comando especial para leer su contenido es lastb.

Rotación de registro

Los archivos de registro pueden crecer mucho en unas pocas semanas o meses y ocupar todo el espacio libre en disco. Para abordar esto, se utiliza la utilidad logrotate. Este realiza la rotación de registros o ciclos que implica acciones tales como mover archivos de registro a un nuevo nombre, archivarlos y/o comprimirlos, a veces enviándolos por correo electrónico al administrador del sistema y eventualmente eliminándolos a medida que avanzan. Las convenciones utilizadas para nombrar estos archivos de registro son diversas (por ejemplo, agregar un sufijo con la fecha); sin embargo es común observar un sufijo con un número entero:

# ls /var/log/apache2/
access.log  error.log  error.log.1  error.log.2.gz  other_vhosts_access.log

Tenga en cuenta que error.log.2.gz ya se ha comprimido con gzip (de ahí el sufijo` .gz`).

Kernel Ring Buffer

El kernel ring buffer es una estructura de datos de tamaño fijo que registra los mensajes de arranque del núcleo, así como cualquier mensaje en vivo del kernel. La función de este buffer — uno muy importante — es el de registrar todos los mensajes del kernel producidos en el arranque — cuando el syslog no está todavía disponible. El comando dmesg imprime el ring buffer del kernel (que solía estar también almacenado en /var/log/dmesg). Debido a la extensión del ring buffer, este comando se usa normalmente en combinación con la utilidad de filtrado de texto grep o un paginador como less. Por ejemplo, para buscar mensajes de arranque:

$ dmesg | grep boot
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
[    0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
[    0.144986] AppArmor: AppArmor disabled by boot time parameter
(...)
Note

A medida que el kernel ring buffer crece con nuevos mensajes, con el tiempo los más antiguos se eliminiran.

El diario del sistema: systemd-journald

A partir de 2015, systemd reemplazó a SysV Init como administrador de servicio y sistema de facto en la mayoría de las principales distribuciones de Linux. Como consecuencia, el daemon journal — journald — se ha convertido en el componente de registro estándar reemplazando a syslog en la mayoría de los aspectos. Los datos ya no se almacenan en texto plano sino en forma binaria. Por lo tanto, la utilidad journalctl es necesaria para leer los registros. Además de eso, journald es compatible con syslog y puede integrarse con este.

journalctl es la utilidad que se utiliza para leer y consultar la base de datos del journal (diario) de Systemd. Si es invocada sin opciones, imprime el journal completo:

# journalctl
-- Logs begin at Tue 2019-06-04 17:49:40 CEST, end at Tue 2019-06-04 18:13:10 CEST. --
jun 04 17:49:40 debian systemd-journald[339]: Runtime journal (/run/log/journal/) is 8.0M, max 159.6M, 151.6M free.
jun 04 17:49:40 debian kernel: microcode: microcode updated early to revision 0xcc, date = 2019-04-01
Jun 04 17:49:40 debian kernel: Linux version 4.9.0-8-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) )
Jun 04 17:49:40 debian kernel: Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-8-amd64 root=/dev/sda1 ro quiet
(...)

Sin embargo, si se invoca con los modificadores -k o --dmesg, será equivalente a usar el comando dmesg:

# journalctl -k
[    0.000000] Linux version 4.9.0-9-amd64 (debian-kernel@lists.debian.org) (gcc version 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) ) #1 SMP Debian 4.9.168-1+deb9u2 (2019-05-13)
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.9.0-9-amd64 root=UUID=5216e1e4-ae0e-441f-b8f5-8061c0034c74 ro quiet
(...)

Otras opciones interesantes para journalctl incluyen:

-b, --boot

Muestra información de arranque.

-u

Muestra mensajes sobre una unidad especificada. Aproximadamente una unidad se puede definir como cualquier recurso manejado por systemd. Por ejemplo, journalctl -u apache2.service se usa para leer mensajes sobre el servidor web apache2.

-f

Muestra los mensajes de diario más recientes y sigue imprimiendo nuevas entradas a medida que se agregan al diario, de forma muy similar a tail -f.

Ejercicios guiados

  1. Eche un vistazo a la siguiente lista de top y responda las siguientes preguntas:

    carol@debian:~$ top
    
    top - 13:39:16 up 31 min,  1 user,  load average: 0.12, 0.15, 0.10
    Tasks:  73 total,   2 running,  71 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.1 us,  0.4 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1020332 total,   698700 free,   170664 used,   150968 buff/cache
    KiB Swap:  1046524 total,  1046524 free,        0 used.   710956 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
      605 nobody    20   0 1137620 132424  34256 S  6.3 13.0   1:47.24 ntopng
      444 www-data  20   0  364780   4132   2572 S  0.3  0.4   0:00.44 apache2
      734 root      20   0   95212   7004   6036 S  0.3  0.7   0:00.36 sshd
      887 carol     20   0   46608   3680   3104 R  0.3  0.4   0:00.03 top
        1 root      20   0   56988   6688   5240 S  0.0  0.7   0:00.42 systemd
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
        3 root      20   0       0      0      0 S  0.0  0.0   0:00.09 ksoftirqd/0
        4 root      20   0       0      0      0 S  0.0  0.0   0:00.87 kworker/0:0
    (...)
    • ¿Qué procesos ha iniciado el usuario carol?

    • ¿Qué directorio virtual de /proc debe visitar para buscar datos sobre el comando top?

    • ¿Qué proceso se ejecutó primero? ¿Cómo puede saber ?

    • Complete la tabla especificando en qué área de salida top se encuentra la siguiente información:

      Información sobre …​ Área de resumen Área de tareas

      Memoria

      Swap

      PID

      CPU time

      Comandos

  2. ¿Qué comando se usa para leer los siguientes registros binarios?

    • /var/log/wtmp

    • /var/log/btmp

    • /run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal

  3. En combinación con grep, ¿qué comandos usaría para averiguar la siguiente información sobre su sistema Linux?

    • ¿Cuándo se reinició el sistema por última vez (wtmp) ?

    • ¿Qué discos duros están instalados (kern.log) ?

    • ¿Cuando ocurrió el último inicio de sesión (auth.log) ?

  4. ¿Cuales dos comandos usarías para mostrar el kernel ring buffer?

  5. Indique a dónde pertenecen los siguientes mensajes de registro:

    • Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 11:23:58 debian NetworkManager[322]: <info> [1562750638.8672] NetworkManager (version 1.6.2) is starting…​

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

  6. ¿Tiene información para consultar el comando journalctl sobre las siguientes unidades?

    Unidad Comando

    ssh

    networking

    rsyslog

    cron

Ejercicios exploratorios

  1. Reconsidere el resultado de top de los ejercicios guiados y responda las siguientes preguntas:

    • ¿Qué dos pasos seguirías para matar el servicio web apache?

    • En el área de resumen, ¿cómo podría mostrar la información sobre la memoria física e swap utilizando las barras de progreso?

    • Ahora, ordena los procesos por uso de memoria:

    • Ahora que tiene información de memoria en barras de progreso y procesos ordenados por uso de memoria, guarde estas configuraciones para que las obtenga como predeterminadas la próxima vez que use top:

    • ¿Qué archivo almacena los ajustes de configuración de top? ¿Dónde se encuentra? ¿Cómo puedes verificar su existencia?

  2. Aprende sobre el comando exec en Bash. Intente demostrar su funcionalidad iniciando una sesión Bash encontrando el proceso Bash con ps, luego ejecute exec /bin/sh y busque el proceso con el mismo PID nuevamente.

  3. Siga estos pasos para explorar los eventos del kernel y la administración dinámica de dispositivos de udev:

    • Conecte en caliente una unidad USB a su computadora. Ejecute dmesg y preste atención a las últimas líneas. ¿Cuál es la línea más reciente?

    • Teniendo en cuenta el resultado del comando anterior, ejecute ls /dev/sd* y asegúrese de que su unidad USB aparezca en la lista. ¿Cuál es el resultado?

    • Ahora retire la unidad USB y ejecute dmesg nuevamente. ¿Cómo se lee la línea más reciente?

    • Ejecute ls /dev/sd* nuevamente y asegúrese de que su dispositivo desapareció de la lista. ¿Cuál es el resultado?

Resumen

En el contexto del almacenamiento de datos, los siguientes temas se han discutido en esta lección: administración de procesos, registro y mensajería del sistema.

En cuanto a la gestión de procesos, hemos aprendido lo siguiente:

  • Los programas generan procesos y los procesos existen en una jerarquía.

  • Cada proceso tiene un identificador único (PID) y un identificador de proceso padre (PPID).

  • top es un comando muy útil para explorar de forma dinámica e interactiva los procesos en ejecución del sistema.

  • ps se puede usar para obtener una instantánea de los procesos actuales en ejecución en el sistema.

  • El directorio /proc incluye directorios para cada proceso en ejecución en el sistema con el nombre de sus PID.

  • El concepto de promedio de carga del sistema que es muy útil para verificar la utilización/sobrecarga de la CPU.

Con respecto al registro del sistema, debemos recordar que:

  • Un registro es un archivo donde se registran los eventos del sistema. Los registros son invaluables cuando se trata de solucionar problemas.

  • El registro ha sido manejado tradicionalmente por servicios especiales como syslog, syslog-ng o rsyslog. Sin embargo, algunos programas usan sus propios demonios de registro.

  • Debido a que los registros son datos variables, se mantienen en /var y a veces sus nombres pueden darle una pista sobre su contenido (kern.log, auth.log, etc.)

  • La mayoría de los registros están escritos en texto plano y se pueden leer con cualquier editor de texto siempre que tenga los permisos correctos. Sin embargo, algunos de ellos son binarios y deben leerse con comandos especiales.

  • Para evitar problemas con el espacio en disco, la utilidad logrotate lleva a cabo log rotation.

  • En cuanto al kernel, utiliza una estructura de datos - kernel ring buffer - donde se guardan los mensajes de arranque (los mensajes antiguos se desvanecen con el tiempo).

  • El administrador de sistema y servicio systemd reemplazó System V init en prácticamente todas las distribuciones con journald convirtiéndose en el servicio de registro estándar.

  • Para leer el diario de systemd, se necesita la utilidad journalctl.

Comandos usados en esta lección:

cat

Concatenar o imprimir el contenido de un archivo.

dmesg

Imprime el kernel ring buffer.

echo

Mostrar una línea de texto o una nueva línea.

file

Determinar el tipo de archivo.

grep

Imprimir líneas que coinciden con un patrón.

last

Mostrar una lista de los últimos usuarios registrados.

less

Muestra el contenido del archivo una página a la vez.

ls

Lista de contenidos del directorio.

journalctl

Consulta el diario systemd.

tail

Mostrar las últimas líneas de un archivo.

Respuestas a los ejercicios guiados

  1. Eche un vistazo a la siguiente lista de top y responda las siguientes preguntas:

    carol@debian:~$ top
    
    top - 13:39:16 up 31 min,  1 user,  load average: 0.12, 0.15, 0.10
    Tasks:  73 total,   2 running,  71 sleeping,   0 stopped,   0 zombie
    %Cpu(s):  1.1 us,  0.4 sy,  0.0 ni, 98.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
    KiB Mem :  1020332 total,   698700 free,   170664 used,   150968 buff/cache
    KiB Swap:  1046524 total,  1046524 free,        0 used.   710956 avail Mem
    
      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
      605 nobody    20   0 1137620 132424  34256 S  6.3 13.0   1:47.24 ntopng
      444 www-data  20   0  364780   4132   2572 S  0.3  0.4   0:00.44 apache2
      734 root      20   0   95212   7004   6036 S  0.3  0.7   0:00.36 sshd
      887 carol     20   0   46608   3680   3104 R  0.3  0.4   0:00.03 top
        1 root      20   0   56988   6688   5240 S  0.0  0.7   0:00.42 systemd
        2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd
        3 root      20   0       0      0      0 S  0.0  0.0   0:00.09 ksoftirqd/0
        4 root      20   0       0      0      0 S  0.0  0.0   0:00.87 kworker/0:0
    (...)
    • ¿Qué procesos ha iniciado el usuario carol?

      Respuesta: Sólo una: top.

    • ¿Qué directorio virtual de /proc debe visitar para buscar datos sobre el comando top?

      Respuesta: /proc/887

    • ¿Qué proceso se ejecutó primero? ¿Cómo puede saber ?

      Respuesta: systemd. Porque es el que tiene PID #1.

    • Complete la tabla especificando en qué área de salida top se encuentra la siguiente información:

      Información sobre …​ Área de resumen Área de tareas

      Memoria

      Si

      Si

      Swap

      Si

      No

      PID

      No

      Si

      CPU time

      Si

      Si

      Comandos

      No

      Si

  2. ¿Qué comando se usa para leer los siguientes registros binarios?

    • /var/log/wtmp

      Respuesta: last

    • /var/log/btmp

      Respuesta: lastb

    • /run/log/journal/2a7d9730cd3142f4b15e20d6be631836/system.journal

      Respuesta: journalctl

  3. En combinación con grep, ¿qué comandos usaría para averiguar la siguiente información sobre su sistema Linux?

    • ¿Cuándo se reinició el sistema por última vez (wtmp) ?

      Respuesta: last

    • ¿Qué discos duros están instalados (kern.log) ?

      Respuesta: less /var/log/kern.log

    • ¿Cuando ocurrió el último inicio de sesión (auth.log) ?

      Respuesta: less /var/log/auth.log

  4. ¿Cuales dos comandos usarías para mostrar el kernel ring buffer?

    dmesg y journalctl -k (also journalctl --dmesg).

  5. Indique a dónde pertenecen los siguientes mensajes de registro:

    • Jul 10 13:37:39 debian dbus[303]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      X

      /var/log/messages

    • Jul 10 11:23:58 debian kernel: [ 1.923349] usbhid: USB HID core driver

      /var/log/auth.log

      /var/log/kern.log

      X

      /var/log/syslog

      /var/log/messages

      X

      Jul 10 14:02:53 debian sudo: pam_unix(sudo:session): session opened for user root by carol(uid=0)

      /var/log/auth.log

      X

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

    • Jul 10 11:23:58 debian NetworkManager[322]: <info> [1562750638.8672] NetworkManager (version 1.6.2) is starting…​

      /var/log/auth.log

      /var/log/kern.log

      /var/log/syslog

      /var/log/messages

      X

  6. ¿Tiene información para consultar el comando journalctl sobre las siguientes unidades?

    Unidad Comando

    ssh

    journalctl -u ssh.service

    networking

    journalctl -u networking.service

    rsyslog

    journalctl -u rsyslog.service

    cron

    journalctl -u cron.service

Respuestas a los ejercicios exploratorios

  1. Reconsidere el resultado top de los ejercicios guiados y responda las siguientes preguntas:

    • ¿Cuales son los dos pasos seguientes para matar el servicio web apache?

      Primero, presione k, luego proporcione un valor a kill.

    • En el área de resumen, ¿cómo podría mostrar la información sobre la memoria física y swap utilizando las barras de progreso?

      Al presionar m una o dos veces.

    • Ahora, ordena los procesos por uso de memoria:

      M

    • Ahora que tiene la información de la memoria en barras de progreso y procesos ordenados por uso de memoria, guarde estas configuraciones para que las obtenga como predeterminadas la próxima vez que use top:

      W

    • ¿Qué archivo almacena los ajustes de configuración de top? ¿Dónde se encuentran? ¿Cómo puedes verificar su existencia?

      El archivo es ~/.config/procps/toprc y se localiza en el directorio de inicio del usuario (~). Como es un archivo oculto (reside en un directorio cuyo nombre comienza con un punto), podemos verificar su existencia con ls -a (lista todos los archivos). Este archivo puede generarse presionando kbd:[Shift+W] mientras estas en top.

  2. Aprende sobre el comando exec en Bash. Intente demostrar su funcionalidad iniciando una sesión Bash encontrando el proceso Bash con ps, luego ejecute exec /bin/sh y busque el proceso con el mismo PID nuevamente.

    exec reemplaza un proceso con otro comando. En el siguiente ejemplo podemos ver que el proceso Bash se reemplaza por /bin/sh (en lugar de que /bin/sh se convierta en un proceso hijo):

    $ echo $$
    19877
    $ ps auxf | grep 19877 | head -1
    carol  19877  0.0  0.0   7448  3984 pts/25   Ss   21:17   0:00  \_ bash
    $ exec /bin/sh
    sh-5.0$ ps auxf | grep 19877 | head -1
    carol  19877  0.0  0.0   7448  3896 pts/25   Ss   21:17   0:00  \_ /bin/sh
  3. Siga estos pasos para explorar los eventos del kernel y la administración dinámica de dispositivos de udev:

    • Conecte en caliente una unidad USB a su computadora. Ejecute dmesg y preste atención a las últimas líneas. ¿Cuál es la línea más reciente?

      Debería obtener algo similar a [ 1967.700468] sd 6:0:0:0: [sdb] Attached SCSI removable disk.

    • Teniendo en cuenta el resultado del comando anterior, ejecute ls /dev/sd* y asegúrese de que su unidad USB aparezca en la lista. ¿Cuál es el resultado?

      Dependiendo de la cantidad de dispositivos conectados a su sistema, debería obtener algo como /dev/sda /dev/sda1 /dev/sdb /dev/sdb1 /dev/sdb2. En nuestro caso, encontramos nuestra unidad USB (/dev/sdb) y sus dos particiones (/dev/sdb1 y /dev/sdb2).

    • Ahora retire la unidad USB y ejecute dmesg nuevamente. ¿Cómo se lee la línea más reciente?

      Debería obtener algo similar a [ 2458.881695] usb 1-9: USB disconnect, device number 6.

    • Ejecute ls /dev/sd * nuevamente y asegúrese de que su dispositivo desapareció de la lista. ¿Cuál es el resultado?

      En nuestro caso, /dev/sda /dev/sda1.

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

4.4 Tu ordenador en la red (4.4 Lección 1)

Leer la próxima lección

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

© 2023 Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© 1999–2023 The Linux Professional Institute Inc. Todos los derechos reservados.