Cuando pruebo software en Linux (una parte normal de mi trabajo), necesito usar varios servidores con varias arquitecturas que ejecutan Linux. Aprovisiono las máquinas, instalo los paquetes de software necesarios, ejecuto mis pruebas, recopilo los resultados y devuelvo la máquina al grupo para que otros puedan usarla para sus pruebas.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Dado que hago esto con tanta frecuencia (incluso varias veces al día), mis primeros 10 minutos en un servidor Linux se han convertido en un ritual diario. Cuando inicio sesión por primera vez en un servidor Linux, busco ciertas cosas usando comandos para recopilar la información que necesito. Revisaré mi proceso en este artículo, pero tenga en cuenta que, en la mayoría de los casos, solo daré el nombre del comando, por lo que deberá identificar las banderas específicas para esos comandos para obtener la información que necesita. Leer las páginas man de los comandos es un buen punto de partida.
1. Primer contacto
Tan pronto como inicio sesión en un servidor, lo primero que hago es verificar si tiene el sistema operativo, el kernel y la arquitectura de hardware necesarios para las pruebas que ejecutaré. A menudo compruebo cuánto tiempo ha estado funcionando un servidor. Si bien esto no importa mucho para un sistema de prueba porque se reiniciará varias veces, esta información me sigue pareciendo útil.
Utilice los siguientes comandos para obtener esta información. Principalmente uso Red Hat Linux para las pruebas, así que si está usando otra distribución de Linux, use *-release
en el nombre del archivo en lugar de redhat-release
:
cat /etc/redhat-release
uname -a
hostnamectl
tiempo de actividad
2. ¿Hay alguien más a bordo?
Una vez que sé que la máquina satisface mis necesidades de prueba, debo asegurarme de que nadie más haya iniciado sesión en el sistema al mismo tiempo que ejecuta sus propias pruebas. Aunque es muy poco probable, dado que el sistema de aprovisionamiento se encarga de esto por mí, es bueno verificarlo de vez en cuando, especialmente si es la primera vez que me conecto a un servidor. También compruebo si hay otros usuarios (que no sean root) que puedan acceder al sistema.
Utilice los siguientes comandos para encontrar esta información. El último comando busca usuarios en /etc/passwd
archivo que tiene acceso de shell; omite otros servicios en el archivo que no tienen acceso de shell o tienen un shell establecido en nologin
:
quién
quién -Hu
grep sh$ /etc/passwd
3. Máquina física o virtual
Ahora que sé que tengo la máquina para mí solo, necesito identificar si es una máquina física o una máquina virtual (VM). Si aprovisionara la máquina yo mismo, podría estar seguro de que tengo lo que pedí. Sin embargo, si está utilizando una máquina que no aprovisionó, debe verificar si la máquina es física o virtual.
Utilice los siguientes comandos para identificar esta información. Si es un sistema físico, verá el nombre del proveedor (por ejemplo, HP, IBM, etc.) y la marca y modelo del servidor; mientras que, en una máquina virtual, debería ver KVM, VirtualBox, etc., según el software de virtualización que se utilizó para crear la VM:
dmidecode -s system-manufacturer
dmidecode -s system-product-name
lshw -c system | producto grep | cabeza -1
cat /sys/class/dmi/id/product_name
cat /sys/class/dmi/id/sys_vendor
4. Herrajes
Debido a que a menudo pruebo el hardware conectado a la máquina Linux, generalmente trabajo con servidores físicos, no con máquinas virtuales. En una máquina física, mi siguiente paso es identificar las capacidades de hardware del servidor, por ejemplo, qué tipo de CPU se está ejecutando, cuántos núcleos tiene, qué banderas están habilitadas y cuánta memoria está disponible para ejecutar pruebas. Si estoy ejecutando pruebas de red, compruebo el tipo y la capacidad de Ethernet u otros dispositivos de red conectados al servidor.
Utilice los siguientes comandos para mostrar el hardware conectado a un servidor Linux. Algunos de los comandos pueden quedar obsoletos en las versiones más recientes del sistema operativo, pero aún puede instalarlos desde los repositorios de yum o cambiar a sus nuevos comandos equivalentes:
lscpu o cat /proc/cpuinfo
lsmem o cat /proc/meminfo
ifconfig -a
ethtool
lshw
lspci
dmicode
5. Software instalado
La prueba de software siempre requiere la instalación de paquetes dependientes adicionales, bibliotecas, etc. Sin embargo, antes de instalar algo, verifico lo que ya está instalado (incluida la versión), así como qué repositorios están configurados, para saber de dónde proviene el software. y puedo depurar cualquier problema de instalación de paquetes.
Utilice los siguientes comandos para identificar qué software está instalado:
rpm -qa
rpm -qa | grep
rpm -qi
yum repolist
yum repoinfo
yum install
ls -l /etc/yum.repos.d //pre>6. Ejecución de procesos y servicios
Una vez que verifico el software instalado, es natural comprobar qué procesos se están ejecutando en el sistema. Esto es crucial cuando se ejecuta una prueba de rendimiento en un sistema:si un proceso en ejecución, un demonio, un software de prueba, etc. consume la mayor parte de la CPU/RAM, tiene sentido detener ese proceso antes de ejecutar las pruebas. Esto también verifica que los procesos o demonios que requiere la prueba estén en funcionamiento. Por ejemplo, si las pruebas requieren que se ejecute httpd, es posible que el servicio para iniciar el demonio no se haya ejecutado aunque el paquete esté instalado.
Utilice los siguientes comandos para identificar los procesos en ejecución y los servicios habilitados en su sistema:
pstree -pa 1
ps -ef
ps auxf
systemctl7. Conexiones de red
Las máquinas de hoy en día están fuertemente interconectadas y necesitan comunicarse con otras máquinas o servicios en la red. Identifico qué puertos están abiertos en el servidor, si hay conexiones de la red a la máquina de prueba, si un firewall está habilitado y, de ser así, está bloqueando algún puerto y con qué servidores DNS se comunica la máquina.
Utilice los siguientes comandos para identificar la información relacionada con los servicios de red. Si un comando en desuso no está disponible, instálelo desde un repositorio de yum o use el comando equivalente más nuevo:
netstat -tulpn
netstat -anp
lsof -i
ss
iptables -L -n
cat /etc/resolv.conf8. Núcleo
Al realizar pruebas de sistemas, encuentro útil conocer información relacionada con el kernel, como la versión del kernel y qué módulos del kernel están cargados. También enumero los parámetros del kernel ajustables y en qué están configurados y verifico las opciones utilizadas al iniciar el kernel en ejecución.
Utilice los siguientes comandos para identificar esta información:
uname -r
cat /proc/cmdline
lsmod
modinfo
sysctl -a
cat /boot/grub2/grub.cfg9. Registros
Por ahora, tengo una buena idea sobre el servidor, incluido qué software está instalado y qué procesos se están ejecutando. Otra cosa de la que no puedo escapar son los archivos de registro:necesito saber dónde verificar la información que se actualiza continuamente.
Use los siguientes comandos para ver los registros de su sistema:
dmesg
tail -f /var/log/messages
journalctlPróximos pasos
Si bien los comandos y las utilidades cambiarán, la información subyacente que muestran permanece más o menos igual. Necesita una vista de alto nivel de la información que está buscando y en qué categoría se encuentra antes de poder concentrarse en qué comandos dominar.
Dado que Linux guarda la mayor parte de la información en archivos, estos comandos básicamente leen la información de los archivos y los presentan de una manera fácil de entender. Un buen siguiente paso es identificar los archivos que utiliza cada comando para mostrar la información. Una pista para encontrar esa información es
strace
comando.