Durante unos años he ido anotando algunas frases que consideraba que podrían servir para ligar con una persona linuxera. Ahora esa recopilación es para usted, se la entrego para que pueda usarla.
Algunas seguro las conoce pero otras lo mismo no y no fallan. Es decirle esto a una persona y caen en tus redes inmediatamente.

Vamos a darle duro a las frases:
uptime -p
Sacará una salida más «pretty» que muestra el uptime. La opción larga es –pretty .
ps -o etime= -p 116543 ps -p 4125 -o etime
Para ver el tiempo que lleva un proceso ejecutándose indicando su PID.
ps -aef --forest
Vista en árbol de los procesos con «pstree -p» y «ps -aef –forest».
netstat -pluton
Usar «netstat -pluton» o -atun en vez «netstat -putona» para ver servicios en estado LISTEN.
ncdu
«ncdu» es tu amigo Ver rápidamente que directorios y archivos son los más pesados.
bash -x nombrescript
Puede ejecutar scripts bash con: «bash -x nombrescript» si desea depurar errores.
zcat, zgrep, zless, zmore, …
Puede usarlos para tratar archivos de texto comprimidos.
cd –
Saltar al directorio anterior. Se hace con «cd –» . Ejemplo: «cd /var/log ; cd -; cd -; cd -; cd –»
find /root/backups -type f -mtime +5 -name '*.tar.gz' -exec rm {} \
El find de toda la vida para eliminar archivos más viejos de x fecha. Muy útil para borrado de logs, backups, …
stress –cpu 2 –io 1 –vm 1 –vm-bytes 512MB –timeout 40s
Generar sencillas pruebas de stress para emular load average. Desde usar cat así: cat /dev/zero > /dev/null a utilizar el programa «stress».
mysqldump -u root –single-transaction –quick nombrebasededatos | gzip > bk-basededatos.sql.gz
Dump de base de datos mysql/mariaDB en producción
dfc
«dfc» mola más que «df -h» solamente porque tiene colorines.
Control + L
Borrar la pantalla en vez de usando clear simplemente presionando Control + L . Es más rápido.
ls -halt
ls -lart y ls -lat . Todo un clásico para listar los archivos de un determinado directorio ordenados por fecha de modificación. Pero mola más: ls -halt
ntpdate -u servidortime
Si usas ntpdate se puede sincronizar la hora con NTP server así.
diag sniffer packet any ‘host 1.1.1.1’ 4 0 a
En un firewall de fortinet. Para capturar trafico desde cualquier host (tanto source como destination) puede hacerse desde CLI en el forti
Control + D
Para cerrar una sesión puedes utilizar «Control + D» en vez de escribir «exit». Es más rápido.
!!
Puede repetir el último comando simplemente escribiendo «!!» en bash.
tcpdump src 1.1.1.1 -i any -vv -w /tmp/captura.pcap
TCPDUMP capturar trafico desde una IP de origen determinada que luego se puede ver así: tcpdump -r /tmp/captura.pcap
grep -irl --exclude-dir="ansible" '1.3.6.1.4.1.41019.2.7.1.1.22.4' .
Buscar una cadena con grep omitiendo algún directorio en el que sabemos que no anda la cosa.
export HISTTIMEFORMAT=%h/%d – %H:%M:%S
Es buena cosa mantener el historial con fecha.
apt install
Actualmente y desde hace años en distros basadas en debian puedes en vez de usar «apt-get install» o «apt-get search» usar simplemente «apt install» o «apt search». Más corto.
find . -type f -print | wc -l
Contar el número de archivos dentro de un directorio y de los archivos dentro de directorios dentro de ese directorio :).
ssh -qn -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@10.10.10.10 "uname -a"
Para una salida silenciosa de un script ejecutado remotamente sobre una máquina vía ssh se puede añadir -q y con -n para que al salir pueda abrirse otra sessión.
Algo chulo es evitar la comprobación del host por si una IP cambia. En los scripts bash suele no hacerse y cuando cambia una IP los scripts dejan de funcionar.
7z x quake4.iso
Descomprimir ISO con 7z en GNU/Linux. Eso descomprimirá la ISO y ya podremos copiar los archivos que necesitemos de su interior.
bchunk DUNE2000.bin DUNE2000.cue DUNE2000.iso
Convertir BIN a ISO en GNU/Linux con bchunk.
mount -o loop DUNE2000.iso /media/cdrom0
Montar una ISO en algún directorio para ver su contenido, copiar algo, etc …
mdf2iso archivo.mdf
mdf2iso & iat – Convertir de MDF a ISO en GNU+Linux.
iat archivo.iso archivo2.iso
Algunas veces la conversión de archivos iso los dejan mal formados. Esto puede apañarse alguna que otra vez con la herramienta iat.
wodim -v dev=/dev/sg1 speed=4 -eject /home/anarkista404/isos/debian-8-8-0-i386-CD-1.iso
Wodim – Grabar una iso desde línea de comandos en un cdrom/dvd.
nmap 192.168.90.62 -p 8680 | grep -i 8680 nmap -sU 192.168.90.62 -p 8680 | grep -i 8680
Comprobar si un puerto anda abierto con nmap (tcp y udp).
openssl s_client -tls1_2 -connect 192.168.90.62:8680 2>&1 | grep -i connected
Comprobar si un puerto anda abierto con openssl
curl -v --silent 192.168.90.62:8680 2>&1 | grep -i connected curl -v telnet://8.8.8.8:53
Comprobar si un puerto anda abierto con curl
telnet 8.8.8.8 442
Comprobar si un puerto anda abierto con telnet
: </dev/tcp/8.8.8.8/443
Comprobar si un puerto anda abierto con bash
netcat -zv 8.8.8.8 443
Comprobar si un puerto anda abierto con netcat (nc)
cat > hola.txt
Utilizar cat para escribir archivos multilinea. Cat sirve para concatenar archivos de texto plano pero la gente lo usa para imprimir en pantalla contenido de archivos. Lo que no suele hacerse es usar cat para escribir archivos multilinea, archivos nuevos.
Una vez realizado ya puedes ir escribiendo la mierda que necesites y finalizas pulsando control+D
En ese momento se quedará guardado el contenido dentro de hola.txt
Esto no lo sabias porque administras Linux en pantalones con traje y corbata en vez de en bragas o calzoncillos andando por la casa semi desnudo. Eres un payaso y lo sabes.
touch /tmp/archivo.txt
Creando archivos sin contenido con touch
> archivo.txt
Crear archivos sin contenido de la forma más rápida y furiosa posible. Si no distingue la derecha de la izquierda no haga esto en su casa señorito. Si se confunde escribiendo > y < es mejor que uses touch y pienses en dedicarte a otra cosa.
Existe mucha gente que han tenido que dejar sus trabajos por emplear mal esto y terminar borrando otros archivos. Usando touch si el archivo existe y tiene contenido no vas a perder el contenido, con esto si. Sirve por tanto para truncar a 0 bytes un archivo aunque es mejor usar truncate para ello.
truncate -s 0 nombrearchivo.log truncate -s 1024 nombrearchivo.log
Truncar archivos vivos (por ejemplo logs) a un tamaño especifico (ejemplo a 1024b) o a 0 bytes.
lsof nombrearchivo.log
Comprobar el proceso que está escribiendo en un archivo con lsof.
fs=$(df / | tail -1 | cut -f1 -d' ') && tune2fs -l $fs | grep created
Saber cuando se instaló el sistema operativo. Llega Benito y nervioso te dice que ese sistema operativo se instaló hace 10 años. Le puedes dar un Zasca en toda la cara diciéndole que no es verdad usando esta magia. Verás la fecha de creación del fs en el que esté montado / (la raíz del sistema).
tune2fs -l /dev/sdX | grep "Reserved block count" | awk '{print $4}'
tune2fs -m 1 /dev/sdX
Cambiar el porcentaje reservado de disco al 1%.
FS="/dev/mapper/rootvg-opt" && lvextend -L+1G $FS -r
Extender 1G sobre un LV en LVM cuando tienes espacio libre para darle en el VG.
free -h ; sync; echo 1 > /proc/sys/vm/drop_caches ; sysctl -w vm.overcommit_memory=1 ; swapoff -av && swapon -av ; free -h
Liberar swap y memoria cache de forma peligrosa pero para que te dejen en paz durante un rato
#!/bin/bash
export LC_ALL=C bash
tHost="$(hostname)"
tTime="$(date +"%d/%m/%Y a las %H:%M:%S")"
tMemTotal="$(free -m | grep "Mem:" | awk '{print $2}')"
tMemUsed="$(free -m | grep "Mem:" | awk '{print $3}')"
tMemFree="$(free -m | grep "Mem:" | awk '{print $4}')"
tLoadAverage="$(uptime | rev | cut -d ":" -f 1 | rev | cut -d " " -f 2-10)"
echo -e "\n$tHost - $tTime"
echo -e "RAM: $tMemUsed M usados de $tMemTotal M totales ($tMemFree M libres)\nCPU Load Average: $tLoadAverage\n\n[+] Listado de Procesos top10 consumo de RAM:\n"
ps -A --sort=-rss --format pid,user,pmem,rss,comm | head -11
echo -e "\nPor tanto el proceso en el top1 consumo RAM es:\n"
ps -A --sort=-rss --format pid,user,pmem,rss,command | head -2
echo -e "\n[+] Listado de Procesos top10 consumo CPU:\n"
ps -A --sort=-pcpu --format pid,user,pcpu,rss,comm | head -11
echo -e "\nPor tanto el proceso en el top1 consumo CPU es:\n"
ps -A --sort=-pcpu --format pid,user,pcpu,rss,command | head -2
echo -e "\n"
TOP 10 de procesos que consumen más RAM y CPU.
pvcreate /dev/sdf pvs vgextend datosvg /dev/sdf pvs ; vgs
Extender un VG con un nuevo PV en LVM
journalctl --vacuum-time=2d journalctl --vacuum-size=500M
Retener solamente 2 días en el journalctl o solamente 500 Megas.
iostat -dx sda | grep sda | awk '{ print $4"/"$5; }'
IOPS – Disco Reads/segundo y writes/segundo
for i in {1..10}; do s=$(dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync 2>&1 | grep -i "s,"); echo -en "$i\tServer Throughput (write speed)\t$s\n"; done
Comprobar el rendimiento de un File System en un server – Server Throughput ( /tmp en este caso, cambiar por otro ).
for i in {1..10}; do s=$(dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync 2>&1 | grep -i "s," | awk {'print$8'}); echo -en "$i\tServer Latency\t\t\t$s\n"; done
Comprobar la latencia de un File System en un server – Server Latency ( /tmp en este caso, cambiar por otro )
time ls -la
Medir el tiempo que tarda un comando en ejecutarse – time.
systemctl --now enable nombreservicio
Habilitar un servicio y arrancarlo del tirón con systemctl – con –now.
systemctl is-enabled systemctl is-active
Comprobar si un servicio está habilitado y activo con systemctl
systemctl list-units | grep -i nginx
Comprobar si un servicio existe grepeando el listado de todos con systemctl.
systemctl daemon-reload
Reiniciar el demonio systemctl cuando se ha tocado algo y se requiere recargar.
systemctl cat nginx
Ver la descripción de un servicio.
htop
Un top más bonito y colorido: htop
ncdu
Comprobar rápidamente el tamaño de os directorios y subdirectorios con ncdu.
wget -r http://fanta.56k.es
Descargar usando wget recursivamente.
wget -q "https://56k.es" -O -
Mostrar la salida por pantalla con wget de una web.
sshpass -p "lapassword" ssh -o StrictHostKeyChecking=no eluser@192.168.1.111 -p 22 sshpass -p "lapassword" ssh -o StrictHostKeyChecking=no eluser@192.168.1.112 -p 3105
SSHPASS ya sabemos que tú no lo usas pero … Acceso ssh con la passwd indicada como parámetro en el oneliner.
timedatectl show-timesync --all timedatectl timesync-status
Comprobar configuración y offset de timedatectl.
#!/bin/bash import /tmp/s.png xclip -selection clipboard -target image/png -i /tmp/s.png
Script para sacar captura de pantalla directamente al clipboard
nmap -sn 192.168.1.0/24 -oG - | grep -i "Host:" | cut -d " " -f2
Nmap – Scan rápido de la red local.
tar --exclude='/home/fanta/.*' --exclude='/home/fanta/nfs' -cvzf - /home/fanta | gpg -c --passphrase "lapassword" > /tmp/backup-home_fanta-$(date +"%Y-%m-%d").tar.gz.gpg tar -cvzf - /root/backups/backups/ | gpg -c --pinentry-mode loopback --passphrase "lapassword" > "backup-hostname-$(date +'%Y-%m-%d').tar.gz.gpg"
Crear un tar.gz cifrado sin despeinarte mucho.
gpg -d archivo.tar.gz.gpg | tar -xvzf -
Descomprimir descrifrando el tar.gz.
Para Unix/Linux – Valor TTL = 64 Windows – Valor TTL = 128 Solaris/AIX – Valor TTL = 254
Identificar un sistema operativo mediante ICMP Ping por el TTL de respuesta.
apt-cache policy nodejs apt install nodejs=16.18.0-deb-1nodesource1
Instalar una versión especifica con apt de un paquete de diferente repo.
npm config set proxy http://172.16.2.1:3128 npm config set https-proxy http://172.16.2.1:3128
Configurar proxy http para que lo use npm.
# Tiempo TAR.GZ Con gzip tradicional (nproc = 1) time tar cfvz /dir/destino/donde/dejareltargz/opt.tar.gz /opt/ 4.7G en 4 minutos con 16 segundos. # Tiempo TAR.GZ Con pigz (nproc = 3) time tar -I pigz -cf /dir/destino/donde/dejareltargz/opt.tar.gz /opt 4.7G en 1 minutos con 37 segundos.
Tiempos de tar.gz usando gzip y pigz.
wget -qO- "https://56k.es/wp-content/uploads/2023/10/workbench13.zip" | bsdtar -xvf-
Bajar un zip y descomprimirlo al vuelo sin copia.
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
Crear un archivo de 1G.
du -d 1 -h | sort -h
Obtener el tamaño de los directorios ordenado con du.
snmpwalk -t 10 -c public -v 1 192.168.1.1 snmpwalk -t 10 -c public -v 1 192.168.1.1:161 iso.3.6.1.2.1.4.20.1.1
snmpwalk contra un router Zyxel P660HW-D1.
subscription-manager identity | grep "environment name" subscription-manager remove --all subscription-manager unregister subscription-manager clean subscription-manager register --org="NOMBREORGANIZACIÓN" --activationkey="LACLAVE" subscription-manager refresh subscription-manager identity | grep "environment name"
Subscribir máquinas Red Hat en Satellite.
# apt update && sudo apt upgrade # apt install dpkg-dev -y # mkdir -p /opt/local/debs # cd /opt/local/debs # wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb # dpkg-scanpackages . /dev/null > Release # dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz # echo "deb [trusted=yes] file:/opt/local/debs ./" >> /etc/apt/sources.list # apt update # apt install google-chrome-stable -y # google-chrome-stable --version
Crear rápidamente un repositorio local en Debian.
about:config en firefox. Se añade como string: network.security.ports.banned.override con el valor: 1-1024
Deshabilitar puertos restringidos en firefox
rpm -q kernel uname -a rpm -e kernel-4.18.0-348.23.1.el8_5.x86_64
Eliminar kernels viejos en redhat y liberar espacio en /boot. Algunas veces puedes encontrar máquinas que no tienen /usr en LVM y que no puedes por lo que sea añadir más disco. Si /usr se está llenando una forma de liberar espacio suele ser comprobar si tenemos kernels viejos que ya no estemos usando.
dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
Borramos modulos y devel y core con dnf «seteando» que en un futuro se eliminen los kernels más viejos. En un futuro se eliminarán los kernels automáticamente al actualizar. Quedando solamente el actual y uno más viejo.
SUSEConnect --status SUSEConnect --cleanup registercloudguest --force-new SUSEConnect --status
Registrar de nuevo SuSe en Azure
svcadm restart bacula-fd svcs bacula svcs | grep -i bacula
Reiniciar servicios en Solaris. Para reiniciar servicios en solaris con svadm.
tar cfvz paquete.tar.gz --exclude="/var/www/wordpress/descargas/*" /var/www/wordpress/
Generar un tar.gz de un directorio pero excluyendo contenido. Es de utilidad cuando tienes directorios con contenido que no suele cambiar mucho y es muy pesado. Haces una vez copia de todo y luego ya solo copia de lo que puede haber cambiado.
Esto puede servir también para algunos momentos en los que te tienes que llevar un tar.gz de algún directorio que lleva en su interior un directorio «logs». Si los logs ocupan y no los quieres mover pues es buena cosa excluirlos :).
Y con estas frases podrá ligar seguramente.
Saludos cordiales.
