
¡Muy buenas lector! 😃 ¿estás empezando en esto del mundo de las pruebas de software? si es así te habrás dado cuenta de lo importante que es tener soltura con los comandos básicos Linux. Esto te permitirá apañártelas a la hora de buscar evidencias del bug que estás persiguiendo y ser un tester excepcional 🚀
Contents
No te bloquees por quedarte sin recursos
No hay nada peor que sospechar algo y no poder llegar al fondo del asunto porque te faltan recursos a la hora de capturar una traza, encontrar un fichero, etc…
Sin duda para mí es una de las primeras cosas que tiene que hacer un tester cuando empieza; moverse bien en el entorno en el que se está probando… y no nos engañemos… lo más común es Linux.
Queda bien en las entrevistas
Recuerdo una entrevista de trabajo 👨💼 que hice hace tiempo. En ella el entrevistador, un tipo curioso, me preguntó ¿qué comandos Linux utilizaba en mi día a día para desarrollar mi trabajo?
Al principio me sorprendió la pregunta, pero si lo piensas bien, si no sabes responder a eso… es que algo no estás haciendo bien como tester… porque para probar hace falta manejarte con soltura en ciertas áreas técnicas y esta es la primera.

Comienza tu chuletario
No salí mal de esa situación pero a partir de ese día me puse a crear un chuletario 📃 con todos los comandos básicos Linux necesarios para un tester. Ya que me di cuenta lo importante que era tener este tema dominado…
Si empiezas desde el principio y vas apuntando todos los comandos que aprendes, con el tiempo tendrás un montón de recursos que te facilitarán el trabajo enormemente.
Y de esta manera evitarás también que alguno se te olvide, ya que la cosa es que puedes usar un comando una vez y luego no necesitarlo durante mucho tiempo, lo que hará que al final se acabe olvidando.
👨💻 Comandos básicos linux para un tester
No me voy a extender en cómo se usan. Creo que es más útil comentar por encima que utilidad darles y luego con la ayuda del propio comando o buscando en google puedes profundizar en su uso.
Comentar que si ya tienes experiencia, esta lista puede parecer super básica, pero seguro que vendrá muy bien a algún noob.
Aún siendo una lista básica no comento ciertos comandos como pueden ser, cd, cp, cat, mv… ya que el artículo sería infumable…
⭐tail
Es sin duda uno de los comandos básicos linux para un tester que más se utiliza.
Este comando te permite monitorizar el efecto que tiene cualquier acción en los servidores a través de sus logs.
La idea es abrir un fichero de log con este comando y el parámetro -f para que quede abierto pendiente de las líneas de log que vayan saliendo según pasen cosas en el sistema que se está probando.
tail -100f fichero.log
⭐grep
Este comando se puede utilizar para filtrar texto si lo combinas con otros comandos de visualizacion de ficheros, como puede ser el anterior comando tail o cat por ejemplo.
tail -100f fichero.log | grep -i "ERROR"
Al ponerle el parámetro -i haces que no diferencie entre mayúsculas y minúsculas.
Con el parámetro -v puedes decirle que no te muestre las trazas que no te interesen.
tail -100f fichero.log | grep -v "warning"
También se puede utilizar para buscar cadenas de texto en ficheros:
grep texto_a_buscar fichero.txt -i (busca un texto en un fichero)
grep texto_a_buscar * -ir (busca un texto en todos los ficheros de un path de manera recursiva)
Este comando tiene mucho más de lo que parece. Por ejemplo con el parámetro -e o el comando egrep (grep extendido) puedes ahorrarte mucho tiempo buscando errores en un log.
Te animo a que inviertas todo el tiempo del mundo en manejar como un experto este comando, es de los más importantes.
⭐find
Otro básico…
Puedes buscar ficheros por nombre, por tamaño, por usuario, fecha… es increíble lo versátil que es…
La manera más básica de utilizarlo es esta:
find / -name cache (busca desde la raízz fichero cuyo nombre es cache)
find /home -iname Cache (lo mismo, pero sin tomar en cuenta mayúsculass y minúsculass y en el directorio home)
find / -name "[0-9]*" (todo lo que empieze con un dígitoo)
find / -name "[Mm]*" (todo lo que empieze con un la letra M o m)
find / -name "[a-m]*.txt" (todo lo que empieze entre a y m y termine en ".txt")
Pero lo dicho, lo puede complicar todo lo que quieras… Te animo a que te lo aprendas de arriba a abajo. Más info en este artículo.
⭐ curl
Comando muy útil para ver lar respuesta de un servidor web a una determinada petición.
Con el comando curl se puede hacer peticiones http como si fueras un navegador, siendo la respuesta texto que no se interpreta.
$curl http://google.com
También te puede interesar automatizar de alguna manera repetidas peticiones curl. Hay muchas maneras de hacerlo, depende de tu necesidad. La manera más simple sería por ejemplo esta, que manda la misma petición curl cada tres segundos:
while sleep 3; do curl 'http://IP:PORT/PATH'; done
⭐ wget
Comandito muy útil para ver si llegas a un fichero localizado en un servidor remoto.
Lo que haces con este comando es bajarte el fichero del servidor remoto que el pidas, al path donde te encuentres.
wget http://IP:PUERTO/path/main.swf
⭐ ss (antiguo netstat)
El comando ss hace referencia a Socket Statuts y se puede utilizar para obtener información de las conexiones de red y puertos abiertos.
Muy útil si ves los procesos de dos máquinas no llegan a comunicarse, comprobar si el puerto donde están configuradas es el correcto o hay algún problema de conexión.
ss -s (muestra un resumen de sockets)
ss -l (muestra los sockets en escucha)
ss -pl (con el identificador del proceso PID)
ss -lp | grep 8080 (para encontrar el proceso que utiliza un puerto concreto)
ss -t -a (muestra socket tipo tcp)
ss -u -a (muestra socket tipo udp)
ss -x -a (muestra socket tipo unix)
⭐ ip add
Un básico para ver la configuración ip e interfaces de la máquina en la que te encuentras.
ip add
ip a (es lo mismo que add)
⭐ chown / chmod
Siendo tester te interesa jugar con los permisos y los usuarios de los ficheros. Para hacer esto tenemos estos dos comandos.
chown -R ftp:gftp <path o fichero> (usuario y grupo)
chmod -R 777 <path o fichero> (permisos)
⭐ ps
Con el comando ps puedes listar todos los procesos que están corriendo en tu máquina. Super útil para comprobar que están arriba los procesos que esperas.
Este comando te muestra el PID (id del prceso) que luego puedes usar para, por ejemplo, “matarlo” con un kill (explicado más abajo)
ps aux | grep nombre_proceso
⭐ df / du
Puede pasar que el servidor donde estás probando se quede sin espacio en disco, y cuando eso pase te serán muy útiles estos dos comandos para saber dónde borrar.
df -kh (te indica el tamaño disponible de las particiones)
du -h (te recorre desde donde estés los directorios remisivamente para ver cuál ocupa demasiado)
⭐ tcpdump
Imprescindible para capturar tráfico entre dos máquinas.
Puedes ver el tráfico que hay en una interface de red determinada, en todas, volcar dicho tráfico a un fichero .pcap y luego abrirlo con wireshark, y mil cosas más.
Fácil de utilizar pero requiere práctica.
tcpdump –s0 -w <fichero_salida.pcap> -i <interfaz> host <nodo_origen> and host <nodo_destino>
⭐ scp
Sirve para transferir un fichero de un host a otro.
También es muy útil para probar la comunicación entre máquinas y si la configuración de interfaces automáticas entre servidores es correcta.
Tarde o temprano lo acabarás usando.
scp fichero user@host:directorio/fichero_destino
⭐ crontab
Seguro que en algún momento te vendrá bien poder ver qué tareas programadas tiene tu máquina y cuando se ejecutan.
Para eso está este comando para listar las tareas:
crontab -l
Y este otro si quieres editar el fichero
crontab -e
⭐ comandos de compresión
Este grupo de comandos es muy útil si te interesa comprimir o descomprimir ficheros.
### Archivos .tar.gz:
Comprimir:
tar -czvf empaquetado.tar.gz /dir/a/empaquetar/
Descomprimir:
tar -xzvf archivo.tar.gz
### Archivos .tar:
Empaquetar:
tar -cvf paquete.tar /dir/a/comprimir/
Desempaquetar:
tar -xvf paquete.tar
### Archivos .gz:
Comprimir:
gzip -9 index.php
Descomprimir:
gzip -d index.php.gz
### Archivos .zip:
Comprimir:
zip archivo.zip carpeta
Descomprimir:
unzip archivo.zip
⭐ z* commands
Se trata de un grupo de comandos muy útil si el fichero de log que te interesa ver está comprimido como .gz
Puedes ejecutar un cat, more, less, grep sobre ficheros comprimidos, ahorrándote el tener que descomprimirlos, consultarlos y después volverlos a comprimir para que no ocupen.
zcat resume.txt.gz
zmore access_log_1.gz
zless access_log_1.gz
zgrep '1.2.3.4' access_log_1.gz
⭐ md5
En multitud de ocasiones te verás ante la duda de si la versión de la clase, librería, plugin… que estás utilizando es la correcta o es una versión que no debe.
Si quieres averiguar si un fichero que tienes en tu servidor es el mismo que el del repositorio de código (por ejemplo) puedes sacar el md5 de ambos y compararlo, si coinciden es que es el mismo fichero.
md5sum <nombre del archivo>
⭐ ntp
Cuando nuestra plataforma tiene varias máquinas, su hora suele estar sincronizada con un servidor de fechas (ntp). Con esto conseguimos que todas las máquinas de nuestra plataforma estén sincronizadas.
Con este sistema, si queremos hacer un cambio general en fecha u hora solo tenemos que cambiarlo en un sitio.
Si tienes algún problema de horas en tu plataforma después de un apagón o algo así, este comando suele solucionarlo:
service ntpd restart
⭐ kill / killall
A qué servidor no se le ha quedado un proceso colgado alguna vez… creo que a ninguno.
Incluso en ocasiones el proceso no responde al comando restart y te ves obligado a tomar medidas más potentes.
Si te pasa esto, no es necesario que reinicies la máquina entera, con matar el proceso que está dando problemas y luego arrancarlo debería ser suficiente.
kill -9 <PID_proceso>
killall -9 <nombre_proceso>
El PID (id de proceso) lo puedes sacar con el comando ‘ps‘.
Y bueno… esto es todo sobre los comandos básicos linux para un tester… aunque como he dicho hay muchísimos más que te pueden solucionar la vida… depende mucho de tu sector y lo que pruebes habitualmente.
He intentado orientar cada comando a la utilidad que le puede dar un tester para probar y buscar fallos. Pero cada comando suele tener mucha más potencia de la que comento aquí, se trata de profundizar lo que a uno le convenga.
Si te ha parecido útil este artículo y te gustaría recibir en tu correo las próximas entradas del blog, no dejes de suscribirte a mi Newsletter ✉ .
Y si ves que vale la pena… anímate! y comparte este artículo en Redes Sociales 👨💻, te lo agradecería infinito 😉 Puedes utilizar los botones de más abajo.
¡¡Muchas gracias por pasarte por aquí!! y… ¡¡Feliz búsqueda de defectos👾!!
Deja una respuesta