Serie RHCSA: Gestión de paquetes Yum, Automatización de tareas con Cron y registros del sistema de supervisión - Parte 10


En este artículo revisaremos cómo instalar, actualizar y eliminar paquetes en Red Hat Enterprise Linux 7. También cubriremos cómo automatizar tareas usando cron, y terminaremos esta guía explicando cómo ubicar e interpretar los archivos de registro del sistema con el enfoque de enseñarle por qué todas estas son habilidades esenciales para todo administrador de sistemas.

Gestión de paquetes a través de Yum

Para instalar un paquete junto con todas sus dependencias que aún no están instaladas, usará:

# yum -y install package_name(s)

Donde nombre (s) de paquete representan al menos un nombre de paquete real.

Por ejemplo, para instalar httpd y mlocate (en ese orden), escriba.

# yum -y install httpd mlocate

Nota: Que la letra y en el ejemplo anterior omite las solicitudes de confirmación que presenta yum antes de realizar la descarga e instalación real de los programas solicitados. Puede omitirlo si lo desea.

De forma predeterminada, yum instalará el paquete con la arquitectura que coincida con la arquitectura del sistema operativo, a menos que se anule agregando la arquitectura del paquete a su nombre.

Por ejemplo, en un sistema de 64 bits, el paquete yum install instalará la versión x86_64 del paquete, mientras que yum install package.x86 (si está disponible) instalará la versión de 32 bits.

Habrá ocasiones en las que desee instalar un paquete pero no sepa su nombre exacto. La búsqueda de todo o las opciones de búsqueda pueden buscar en los repositorios actualmente habilitados una determinada palabra clave en el nombre del paquete y/o también en su descripción, respectivamente.

Por ejemplo,

# yum search log

buscará en los repositorios instalados paquetes con la palabra log en sus nombres y resúmenes, mientras que

# yum search all log

buscará la misma palabra clave en la descripción del paquete y en los campos de URL.

Una vez que la búsqueda devuelve una lista de paquetes, es posible que desee mostrar más información sobre algunos de ellos antes de instalar. Ahí es cuando la opción de información será útil:

# yum info logwatch

Puede buscar actualizaciones periódicamente con el siguiente comando:

# yum check-update

El comando anterior devolverá todos los paquetes instalados para los que hay una actualización disponible. En el ejemplo que se muestra en la imagen a continuación, solo rhel-7-server-rpms tiene una actualización disponible:

Luego puede actualizar ese paquete solo con,

# yum update rhel-7-server-rpms

Si hay varios paquetes que se pueden actualizar, yum update los actualizará todos a la vez.

Ahora bien, ¿qué sucede cuando conoce el nombre de un ejecutable, como ps2pdf, pero no sabe qué paquete lo proporciona? Puede averiguar con yum qué proporciona "*/[ejecutable]" :

# yum whatprovides “*/ps2pdf”

Ahora, cuando se trata de eliminar un paquete, puede hacerlo con yum remove package. Fácil, ¿eh? Esto demuestra que yum es un administrador de paquetes completo y poderoso.

# yum remove httpd

Lea también: 20 comandos de Yum para administrar la administración de paquetes RHEL 7

Buenas viejas RPM simples

RPM (también conocido como RPM Package Manager, o originalmente RedHat Package Manager) también se puede utilizar para instalar o actualizar paquetes cuando vienen en forma de paquetes .rpm independientes.

A menudo se utiliza con las banderas -Uvh para indicar que debe instalar el paquete si aún no está presente o intentar actualizarlo si está instalado (-U) , produciendo una salida detallada (-v) y una barra de progreso con marcas de almohadilla (-h) mientras se realiza la operación. Por ejemplo,

# rpm -Uvh package.rpm

Otro uso típico de rpm es producir una lista de paquetes actualmente instalados con código> rpm -qa (abreviatura de query all):

# rpm -qa

Lea también: Comandos de 20 RPM para instalar paquetes en RHEL 7

Programación de tareas usando Cron

Linux y otros sistemas operativos similares a Unix incluyen una herramienta llamada cron que le permite programar tareas (es decir, comandos o scripts de shell) para que se ejecuten de forma periódica. Cron comprueba cada minuto el directorio/var/spool/cron en busca de archivos con nombres de cuentas en/etc/passwd.

Al ejecutar comandos, cualquier salida se envía por correo al propietario del crontab (o al usuario especificado en la variable de entorno MAILTO en/etc/crontab, si existe).

Los archivos crontab (que se crean escribiendo crontab -e y presionando Enter) tienen el siguiente formato:

Por lo tanto, si queremos actualizar la base de datos de archivos local (que es utilizada por location para buscar archivos por nombre o patrón) cada segundo día del mes a las 2:15 am, debemos agregar la siguiente entrada crontab:

15 02 2 * * /bin/updatedb

La entrada crontab anterior dice, "Ejecutar/bin/updatedb el segundo día del mes, todos los meses del año, independientemente del día de la semana, a las 2:15 am". Como estoy seguro de que ya habrá adivinado, el símbolo de estrella se utiliza como carácter comodín.

Después de agregar un trabajo cron, puede ver que se agregó un archivo llamado root dentro de/var/spool/cron, como mencionamos anteriormente. Ese archivo enumera todas las tareas que debe ejecutar el demonio crond:

# ls -l /var/spool/cron

En la imagen de arriba, el crontab del usuario actual se puede mostrar usando cat/var/spool/cron/root o,

# crontab -l

Si necesita ejecutar una tarea de manera más detallada (por ejemplo, dos veces al día o tres veces al mes), cron también puede ayudarlo a hacerlo.

Por ejemplo, para ejecutar/my/script los días 1 y 15 de cada mes y enviar cualquier salida a/dev/null, puede agregar dos entradas crontab de la siguiente manera:

01 00 1 * * /myscript > /dev/null 2>&1
01 00 15 * * /my/script > /dev/null 2>&1

Pero para que la tarea sea más fácil de mantener, puede combinar ambas entradas en una:

01 00 1,15 * *  /my/script > /dev/null 2>&1

Siguiendo el ejemplo anterior, podemos ejecutar/my/other/script a la 1:30 am el primer día del mes cada tres meses:

30 01 1 1,4,7,10 * /my/other/script > /dev/null 2>&1

Pero cuando tiene que repetir una determinada tarea cada "x" minutos, horas, días o meses, puede dividir la posición correcta por la frecuencia deseada. La siguiente entrada crontab tiene exactamente el mismo significado que la anterior:

30 01 1 */3 * /my/other/script > /dev/null 2>&1

O tal vez necesite ejecutar un determinado trabajo en una frecuencia fija o después de que el sistema se inicie, por ejemplo. Puede utilizar una de las siguientes cadenas en lugar de los cinco campos para indicar la hora exacta en la que desea que se ejecute su trabajo:

@reboot    	Run when the system boots.
@yearly    	Run once a year, same as 00 00 1 1 *.
@monthly   	Run once a month, same as 00 00 1 * *.
@weekly    	Run once a week, same as 00 00 * * 0.
@daily     	Run once a day, same as 00 00 * * *.
@hourly    	Run once an hour, same as 00 * * * *.

Lea también: 11 comandos para programar trabajos cron en RHEL 7

Localización y comprobación de registros

Los registros del sistema se encuentran (y rotan) dentro del directorio/var/log. De acuerdo con el Estándar de jerarquía del sistema de archivos de Linux, este directorio contiene varios archivos de registro, que se escriben en él o en un subdirectorio apropiado (como audit, httpd o samba en la imagen a continuación) por los demonios correspondientes durante la operación del sistema:

# ls /var/log

Otros registros interesantes son dmesg (contiene todos los mensajes del búfer de anillo del kernel), seguro (registra los intentos de conexión que requieren autenticación del usuario), mensajes (mensajes de todo el sistema) y wtmp (registros de todos los inicios y cierres de sesión de los usuarios).

Los registros son muy importantes porque le permiten tener una idea de lo que está sucediendo en todo momento en su sistema y lo que sucedió en el pasado. Representan una herramienta invaluable para solucionar problemas y monitorear un servidor Linux y, por lo tanto, a menudo se usan con el comando tail -f para mostrar eventos, en tiempo real, a medida que ocurren y se registran en un registro.

Por ejemplo, si desea mostrar eventos relacionados con el kernel, escriba el siguiente comando:

# tail -f /var/log/dmesg

Lo mismo si desea ver el acceso a su servidor web:

# tail -f /var/log/httpd/access.log

Resumen

Si sabe cómo administrar paquetes de manera eficiente, programar tareas y dónde buscar información sobre el funcionamiento actual y pasado de su sistema, puede estar seguro de que no se encontrará con sorpresas muy a menudo. Espero que este artículo le haya ayudado a aprender o actualizar sus conocimientos sobre estas habilidades básicas.

No dude en escribirnos a través del formulario de contacto a continuación si tiene alguna pregunta o comentario.