Colección de comandos y tareas útiles para el uso de sistemas GNU/Linux. Este es un recopilatorio con explicaciones concisas, se supone que se aplicarán sabiendo lo que se hace.

Para cualquier mejora no dudes en añadir tus comentarios.

Uso avanzado del terminal

  • cmd_1 ; cmd_2 ; cmd_3 ejecuta múltiples comandos en una línea
  • cmd_1 && cmd_2 ejecuta múltiples comandos sólo si el previo fue exitoso
  • CTRL+R término_buscado busca comandos anteriores por un término
  • CTRL+A mueve el cursor al inicio de la línea
  • CTRL+E mueve el cursor al final de la línea
  • sudo !! ejecuta un comando como root (!! repite el último comando escrito)
  • cd !$ con !$ repite el último argumento del comando anterior
  • ALT+. añade el último argumento de comandos previos pulsando .
  • Usar TAB para autocompletar con la lista de entradas del directorio actual

Primer y segundo plano

  • CTRL+Z suspende (detiene) y pasa a segundo plano el proceso actual
  • jobs -l lista procesos en segundo plano (+ señala proceso por defecto)
  • bg continúa la ejecución en segundo plano del proceso por defecto
  • fg %2 trae a primer plano el proceso [2] de la lista
  • disown -h %1 disocia el proceso [1] y no se eliminará al cerrar sesión
  • ping -i 60 > ping.log & lanza un proceso en segundo plano con &
  • nohup ping -i 60 > ping.log & lanza un proceso en segundo plano que seguirá ejecutándose al cerrar sesión

Comandos básicos

Navegación en directorios

  • cd /var/log cambia al directorio /var/log
  • cd cambia al directorio $HOME del usuario
  • cd .. retrocede al directorio anterior al que te encuentras
  • cd ../.. retrocede dos niveles
  • cd - regresa al directorio de trabajo anterior
  • pwd muestra la ruta del directorio actual
  • ls lista las entradas del directorio actual
  • ls -la lista detallada (-l) y entradas ocultas que empiezan por . (-a)
  • ls -la | grep cadena lista las entradas que contienen cadena
  • ls -lh lista detallada y legible para humanos
  • ls *[0-9]* lista las entradas que contienen números
  • ls -F lista las entradas añadiendo un indicador de tipo a cada una
  • ls -S lista los archivos por tamaño, de mayor a menor
  • tree muestra los ficheros y carpetas en forma de árbol (también lstree)

Información básica del sistema

  • uname -a (abreviatura de Unix name) muestra información sobre el sistema
  • uname -r sólo muestra la versión del kernel
  • uname -m muestra el tipo de arquitectura de la máquina (también arch)
  • lsb_release -a muestra información sobre la instalación LSB (Linux Standard Base)
  • cat /proc/version muestra información completa de la versión del kernel
  • hostname muestra el nombre del servidor
  • uptime muestra cuánto tiempo lleva funcionando el sistema
  • last reboot muestra el historial de reinicios

Fecha y hora

  • date muestra la fecha del sistema
  • cal 2019 despliega el calendario de 2019
  • cal 07 2019 muestra sólo el mes julio de 2019
  • date 041217002011.00 ajusta fecha y hora del sistema
  • clock -w guarda los cambios de fecha en la BIOS

Apagar el sistema

  • shutdown -h now
  • init 0
  • telinit 0
  • halt
  • systemctl poweroff
  • systemctl suspend pone el sistema en modo de bajo consumo
  • systemctl hibernate guarda el estado del sistema antes de apagarlo para restaurarlo en el arranque

También se puede programar:

  • shutdown -h 20:15 & planifica el apagado del sistema a las 8:15pm
  • shutdown -c cancela un apagado planificado del sistema

Reiniciar el sistema

  • shutdown -r now
  • reboot
  • systemctl reboot

Cerrar la sesión

  • logout

Sistema de ficheros y uso del disco

Ficheros y directorios

  • mkdir dir1 crea un directorio con nombre dir1
  • mkdir dir1 dir2 crea dos directorios simultáneamente
  • mkdir -p /tmp/dir1/dir2 crea un árbol de directorios
  • rm -f fic1 borra el fichero fic1
  • rm -rf dir1 elimina recursivamente el contenido del directorio dir1
  • rm -rf dir1 dir2 borra dos directorios con todo su contenido
  • rm -ri dir1 borra un directorio y todo su contenido de forma interactiva
  • mv dir1 nuevo_dir1 renombra o mueve un fichero o directorio
  • rmdir dir1 borra el directorio dir1
  • cp fic1 fic2 copia el fichero fic1 a fic2 (reemplaza fic2 si ya existía)
  • cp dir1/* . copia el contenido de dir1 en el directorio actual
  • cp -r dir1/* dir2 copia recursivamente el contenido de dir1 en otro directorio
  • cp -a /tmp/dir1 . copia un directorio en el directorio actual
  • cp -a dir1 dir2 copia el directorio dir1 a dir2 (reemplaza los contenidos de dir2 que ya existiesen en dir1)
  • ln -s fic1 lnk1 crea un enlace simbólico al fichero o directorio
  • ln fic1 lnk1 crea un enlace físico al fichero o directorio
  • touch fic1 crea un fichero vacío, o lo trunca si ya existe
  • touch -t 0712250000 fic1 modifica el tiempo de creación de un fichero o directorio
  • file fic1 muestra las características MIME de un fichero

Buscar ficheros

  • find / -name fic1 busca un fichero/directorio desde la raíz del sistema
  • find / -user usuario1 busca ficheros y directorios pertenecientes al usuario usuario1
  • find /home/usuario1 -name \*.bin busca ficheros con extensión .bin dentro del directorio /home/usuario1
  • find /usr/bin -type f -atime +100 busca ficheros binarios no usados en los últimos 100 días
  • find /usr/bin -type f -mtime -10 busca ficheros creados o cambiados en los últimos 10 días
  • find / -name \*.rpm -exec chmod 755 ‘{}’ \; busca ficheros con extensión .rpm y modifica sus permisos
  • find / -xdev -name \*.rpm busca ficheros con extensión .rpm ignorando los dispositivos removibles como pendrives, cd’s, etc…
  • locate \*.ps busca ficheros con extensión .ps previamente indexados por updatedb
  • whereis halt muestra la ubicación de un fichero binario, de ayuda o fuente (en este caso pregunta por el comando halt)
  • which halt muestra el camino a un fichero binario/ejecutable

Montar un sistema de ficheros

  • mount /dev/hda2 /mnt/hda2 monta la partición hda2 (debe existir el directorio /mnt/hda2)
  • umount /dev/hda2 desmonta la partición hda2 (hay que salir primero de /mnt/hda2)
  • fuser -km /mnt/hda2 obliga a desmontar cuando el dispositivo está ocupado
  • umount -n /mnt/hda2 desmonta sin leer /etc/mtab (útil si es de solo lectura o el disco duro está lleno)
  • mount /dev/cdrom /mnt/cdrom monta un lector de cd/dvd
  • mount /dev/hdc /mnt/cdrecorder monta un grabador de cd/dvd
  • mount -o loop file.iso /mnt/cdrom monta un fichero o una imagen ISO
  • mount -t vfat /dev/hda5 /mnt/hda5 monta un sistema de ficheros FAT32
  • mount /dev/sda1 /mnt/usbdisk monta un pendrive USB o una memoria (sin especificar el tipo de sistema de ficheros)

Estado y análisis de un sistema de ficheros

  • badblocks -v /dev/hda1 comprueba los bloques defectuosos en la partición hda1
  • fsck /dev/hda1 comprueba (repara) la integridad del sistema de ficheros existente en hda1
  • fsck.ext2 /dev/hda1 comprueba (repara) la integridad del sistema de ficheros ext2 en hda1
  • e2fsck /dev/hda1 comprueba (repara) la integridad del sistema de ficheros ext2 en hda1
  • e2fsck -j /dev/hda1 comprueba (repara) la integridad del sistema de ficheros ext3 (journal) en hda1
  • fsck.ext3 /dev/hda1 comprueba (repara) la integridad del sistema de ficheros ext3 en hda1
  • fsck.vfat /dev/hda1 comprueba (repara) la integridad del sistema de ficheros FAT32 en hda1
  • fsck.msdos /dev/hda1 comprueba (repara) la integridad de un sistema de ficheros DOS en hda1
  • dosfsck /dev/hda1 comprueba (repara) la integridad de un sistema de ficheros DOS en hda1

Espacio en disco

  • df -h muestra las particiones montadas y el espacio de disco disponible
  • ls -lSr | more muestra el tamaño de los ficheros y directorios ordenados por tamaño
  • du -sh dir1 estima el espacio usado por el directorio dir1
  • du -sk * | sort -rn muestra el tamaño de los ficheros y directorios ordenados por tamaño
  • rpm -q -a –qf '%10{SIZE}t%{NAME}n' | sort -k1,1n muestra el espacio usado por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros)
  • dpkg-query -W -f='${Installed-Size;10}t${Package}n' | sort -k1,1n muestra el espacio usado por los paquetes deb instalados, organizados por tamaño (Ubuntu, Debian y otros)

Permisos y propiedad de los ficheros

r-- Lectura   (4)  #             [u]ser (propietario)    |  [g]roup (grupo)  | [o]thers (otros)
-w- Escritura (2)  # Ej. 754:           rwx (7)          |      r-x (5)      |     r-- (4)
--x Ejecución (1)  #         lectura/escritura/ejecución | lectura/ejecución |     lectura
  • chmod [OPCIÓN] MODO[,MODO] dir1|fic1 donde MODO es [ugoa]*([-+=]([rwxXst])) y a=ugo
  • chmod u=rw,g=r,o= fic1 restringe el archivo fic1 a -rw-r-----, igual que chmod 640 fic1
  • chmod a+rwx dir1 asigna a dir1 permisos de lectura, escritura y ejecución para todos los usuarios
  • chmod go-rwx dir1 quita a dir1 los permisos de lectura, escritura y ejecución para el grupo y otros
  • chmod -R o-r /home/* quita recursivamente el permiso de lectura para otros usuarios a todo /home
  • chmod u+s /bin/fic1 activa SUID en un binario (el usuario ejecutará con los privilegios del propietario)
  • chmod u-s /bin/fic1 desactiva el bit SUID en un fichero binario
  • chmod g+s /home/pub activa SGID en un directorio (cambia el privilegio de ejecución según el grupo del fichero)
  • chmod g-s /home/pub desactiva el bit SGID en un directorio
  • chmod +t /home/pub activa STICKY en un directorio (sólo dejará renombrar o borrar ficheros al propietario)
  • chmod -t /home/pub desactiva el bit STICKY de un directorio
  • chown usuario1 fic1 cambia el propietario del fichero fic1 a usuario1
  • chown -R usuario1 dir1 cambia el propietario del directorio dir1 y de los ficheros y directorios contenidos
  • chgrp grupo1 fic1 cambia el grupo del fichero fic1 a grupo1
  • chown usuario1:grupo1 fic1 cambia el propietario y el grupo del fichero fic1
  • chown usuario1: fic1 igual que chown usuario1:usuario1 fic1 (si coincide nombre de usuario y grupo)
  • find / -perm -u+s -print busca y lista todos los ficheros del sistema con el bit SUID activo

Se puede predeterminar umask para todos los usuarios en /etc/profile. Suele ser 022, que se resta de 777 para establecer por defecto 755 (aunque en ficheros nunca se activan los permisos de ejecución).

Atributos especiales en ficheros

  • chattr +a fic1 permite escribir en un fichero sólo añadiendo (modo «append»)
  • chattr +c fic1 hace que un fichero sea descomprimido/comprimido automáticamente al leer/escribir
  • chattr +d fic1 para que el archivo no sea candidato para respaldo al usar dump
  • chattr +i fic1 hace inmutable el fichero y no podrá ser eliminado, alterado, renombrado ni enlazado
  • chattr +s fic1 permite que un fichero sea borrado de forma segura y definitiva
  • chattr +S fic1 asegura que los cambios serán escritos inmediatamente en el disco, en modo síncrono
  • chattr +u fic1 permite recuperar con las herramientas adecuadas un fichero una vez borrado
  • lsattr muestra los atributos especiales de cada fichero del listado

Formatear un sistema de ficheros

  • mkfs.ext4 /dev/hda1 crea un sistema de ficheros tipo Linux ext4 en la partición hda1
  • mke2fs /dev/hda1 crea un sistema de ficheros tipo Linux ext2 en hda1
  • mke2fs -j /dev/hda1 crea un sistema de ficheros tipo Linux ext3 (journal) en hda1
  • mkfs -t vfat 32 -F /dev/hda1 crea un sistema de ficheros FAT32 en hda1
  • mkswap /dev/hda3 crea un área de intercambio (swap) en hda3

Volúmenes lógicos

LVM (Logical Volume Manager o Gestor de Volúmenes Lógicos) añade una capa de abstracción entre los dispositivos de almacenamiento y los sistemas de ficheros.

Se compone de volúmenes físicos (Physical Volumes o PV, son los dispositivos de almacenamiento, como un disco duro, una partición, una tarjeta SD, un dispositivo RAID o un dispositivo cifrado); grupo de volúmenes (Volume Group o VG, agrupa uno o más PV y puede crecer simplemente añadiendo nuevos PV); y volúmenes lógicos (Logical Volumes o LV, utiliza los PV del VG como una única partición tradicional, visible y conteniendo un sistema de ficheros como /home).

  • Inicializa dos particiones de disco (PV):
    $ dd if=/dev/zero of=/dev/sda bs=1k count=1
    $ dd if=/dev/zero of=/dev/sdb bs=1k count=1
    $ pvcreate /dev/sda
    Physical volume "/dev/sda" successfully created
    $ pvcreate /dev/sdb
    Physical volume "/dev/sdb" successfully created
  • Crea el grupo lógico (VG) vg_grupo con las dos particiones:
    $ vgcreate vg_grupo /dev/sda /dev/sdb
    Volume group "vg_grupo" successfully created
  • Crea el volumen lógico (LV) lv1_volumen:
    $ lvcreate -L1G -n lv1_volumen vg_grupo
    lvcreate -- doing automatic backup of "vg_grupo"
    lvcreate -- logical volume "/dev/vg_grupo/lv1_volumen" successfully created
  • Crea un sistema de ficheros (JFS en este ejemplo) con el LV recién creado y lo monta:
    $ mkfs.jfs /dev/vg_grupo/lv1_volumen
    $ mount -t jfs /dev/vg_grupo/lv1_volumen /mnt/volumen
  • Actualiza /etc/fstab para hacer permanentes los cambios:
    $ vi /etc/fstab
    /dev/vg_grupo/lv1_volumen /mnt/volumen jfs defaults 0 0
    :wq!
  • vgscan analiza dispositivos de bloque LVM admitidos en el sistema en busca de VG
  • vgscan --mknodes además comprueba /dev para crear (si no existen) o eliminar (si no son necesarios) los archivos especiales para activar los LV
  • vgchange -ay vg_grupo activa los LV del VG vg_grupo (si no se indica ningún grupo se activan todos los LV) 
  • lvs muestra información de los volúmenes lógicos (1)
  • lvdisplay muestra información de los volúmenes lógicos (2)
  • mount /dev/vg_grupo/lv_volumen /mnt/grupo/volumen monta un volumen lógico de un grupo de volúmenes en /mnt/grupo/volumen

El área de intercambio (swap)

  • mkswap /dev/hda3 crea un sistema de ficheros para intercambio (área swap)
  • swapon /dev/hda3 activa una nueva partición de intercambio (swap)
  • swapon /dev/hda2 /dev/hdb3 activa dos particiones de intercambio (swap)

Redes

LAN y WiFi

  • ifconfig eth0 muestra la configuración de la interfaz eth0
  • ifup eth0 habilita la interfaz eth0
  • ifdown eth0 deshabilita la interfaz eth0
  • ifconfig eth0 192.168.1.1 netmask 255.255.255.0 configura la dirección IP de eth0
  • ifconfig eth0 promisc configura eth0 para obtener los paquetes (sniffing)
  • dhclient eth0 activa la interfaz eth0 en modo DHCP
  • echo “1” > /proc/sys/net/ipv4/ip_forward activa el enrutado de IP (como si fuese un router)
  • route -n muestra mesa de recorrido
  • route add -net 0/0 gw IP_Gateway configura entrada predeterminada
  • route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configura una ruta estática para buscar la red ‘192.168.0.0/16’
  • route del 0/0 gw IP_gateway elimina una ruta estática
  • hostname -i muestra la dirección IP del servidor (sólo Linux)
  • host www.example.com busca el nombre del host para resolver el nombre a una dirección IP (1)
  • nslookup www.example.com busca el nombre del host para resolver el nombre a una dirección IP y viceversa (2)
  • ping 192.168.0.100 comprueba si está accesible o habilitada la respuesta de una IP
  • ip link show muestra el estado de enlace de todas las interfaces
  • mii-tool eth0 muestra el estado de enlace de ‘eth0’
  • ethtool eth0 muestra las estadísticas de tarjeta de red ‘eth0’
  • netstat -i muestra las interfaces de red y su estado
  • netstat -tup muestra todas las conexiones de red activas y sus PID
  • netstat -tupl muestra todos los servicios de escucha de red en el sistema y sus PID
  • tcpdump tcp port 80 muestra todo el tráfico HTTP
  • iwlist scan muestra las redes inalámbricas
  • iwconfig eth1 muestra la configuración de una tarjeta de red inalámbrica
  • whois www.example.com busca en base de datos Whois

SAMBA, redes de Microsoft Windows

  • nbtscan ip_addr resuelve nombres de la red BIOS
  • nmblookup -A ip_addr resuelve nombres de la red BIOS
  • smbclient -L ip_addr/hostname muestra acciones remotas de un host en Windows

Tablas IP (cortafuegos)

  • iptables -t filter -L muestra todas las cadenas de la tabla de filtros
  • iptables -t nat -L muestra todas las cadenas de la tabla NAT
  • iptables -t filter -F limpia todas las reglas de la tabla de filtros
  • iptables -t nat -F limpia todas las reglas de la tabla NAT
  • iptables -t filter -X borra cualquier cadena creada por el usuario
  • iptables -t filter -A INPUT -p tcp –dport telnet -j ACCEPT permite las conexiones telnet para entrar
  • iptables -t filter -A OUTPUT -p tcp –dport http -j DROP bloquea las conexiones HTTP para salir
  • iptables -t filter -A FORWARD -p tcp –dport pop3 -j ACCEPT permite las conexiones POP a una cadena delantera
  • iptables -t filter -A INPUT -j LOG –log-prefix “DROP INPUT” registra una cadena de entrada
  • iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE configura un PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida forzada
  • iptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 22 -j DNAT –to-destination 10.0.0.2:22 redirecciona los paquetes dirigidos de un host a otro

Administración del sistema

Información del hardware del sistema

  • dmesg muestra el hardware detectado durante el arranque del sistema
  • lsdev muestra información del hardware instalado
  • dmidecode -q muestra información del hardware desde la BIOS (DMI/SMBIOS)
  • hwinfo muestra información detallada de CPU, memoria, disco, controladores…
  • lspci -tv lista los dispositivos conectados vía PCI
  • lsusb -tv muestra los dispositivos USB
  • cat /proc/scsi/scsi lista los dispositivos scsi (también lsscsi)
  • cat /proc/cpuinfo muestra información completa de la CPU (también lscpu)
  • cat /proc/net/dev muestra adaptadores de red disponibles y estadísticas
  • cat /proc/meminfo comprueba el uso de la memoria
  • free -m muestra el estado de la memoria en megabytes

Información particiones y discos

  • cat /proc/swaps muestra los archivos de intercambio (swap)
  • cat /proc/mounts muestra los sistemas de ficheros montados
  • cat /proc/partitions muestra todas las particiones registradas
  • mount | column -t lista los sistemas de ficheros montados en el sistema
  • hdparm -I /dev/hda muestra información obtenida directamente del disco
  • hdparm -tT /dev/sda realiza una prueba de lectura en un disco duro
  • fdisk -l muestra las tablas de partición ordenadas por nombre del dispositivo
  • fdisk -l /dev/sdb sólo muestra las particiones del disco indicado
  • fdisk /dev/sdb muestra todas las opciones con un disco (usar m para listar comandos disponibles)
  • lsblk -fm muestra un diagrama de los dispositivos de bloques (particiones de discos y otros dispositivos)
  • smartctl -i /dev/hda comprueba si SMART está activado en un disco duro y muestra su información básica
  • smartctl -a /dev/hda muestra toda la información SMART de un disco duro

Usuarios y grupos

  • id muestra el identificador del usuario activo con su inicio de sesión y grupo
  • last muestra los últimos inicios de sesión en el sistema
  • who muestra quién ha iniciado sesión en el sistema
  • echo "Acceso al sistema limitado" > /etc/nologin evita temporalmente los inicios de sesión en el sistema (excepto para root)
  • newgrp nombre_grupo inicia sesión con un nuevo grupo y puede cambiar el grupo predeterminado del actual directorio de trabajo
  • groupadd nombre_grupo crea un nuevo grupo
  • groupdel nombre_grupo borra un grupo
  • groupmod -n nuevo_nombre_grupo anterior_nombre_grupo renombra un grupo
  • useradd -c "Nombre Apellidos" -g admin -d /home/nombre_usuario -s /bin/bash nombre_usuario crea un nuevo usuario perteneciente al grupo admin
  • useradd nombre_usuario crea un nuevo usuario
  • userdel -r nombre_usuario borra un usuario (-r elimina el directorio home)
  • usermod -c "Usuario FTP" -g system -d /ftp/nombre_usuario -s /bin/nologin nombre_usuario cambia los atributos del usuario
  • passwd cambia la contraseña (las contraseñas cifradas se almacenan en /etc/shadow)
  • passwd nombre_usuario cambia la contraseña de un usuario (sólo por root)
  • chage -E 2021-12-31 nombre_usuario pone plazo a la contraseña de un usuario (en el ejemplo la contraseña expira el 31 de diciembre de 2021)
  • pwck comprueba la sintaxis y el formato del fichero /etc/passwd y la existencia de usuarios
  • grpck comprueba la sintaxis y el formato del fichero /etc/group y la existencia de grupos

Límites definidos

  • ulimit -a muestra los límites definidos en el terminal o script actual
  • ulimit -n 10240 modifica el límite máximo de ficheros abiertos por el terminal o script
  • cat /etc/security/limits.conf comprueba los límites definidos para usuarios y aplicaciones
  • sysctl -a muestra todos los límites definidos en el sistema (ver /etc/sysctl.conf)
  • sysctl fs.file-max muestra el número máximo posible de ficheros abiertos por el sistema
  • sysctl fs.file-max=10240 modifica el límite máximo posible de ficheros abiertos por el sistema

Procesos

  • ps -auxefw lista con información detallada de procesos en vista jerárquica
  • ps -e -o pid,args –-forest muestra los procesos en una vista jerárquica
  • pstree muestra un árbol con los procesos
  • pgrep -l sshd devuelve PID de procesos filtrados por (parte del) nombre
  • fuser -va 22/tcp lista los procesos que están usando el puerto 22
  • fuser -va /home lista los procesos que están accediendo a la partición /home
  • echo $$ muestra el identificador de proceso (PID) de el terminal actual
  • kill -9 id_proceso fuerza la finalización de un proceso (también kill -s KILL id_proceso)
  • kill -15 id_proceso envía señal de finalización software (SIGTERM)
  • fuser -k -TERM -m /home finaliza los procesos que están accediendo a /home (p.e. para umount)

Prioridades

Los procesos se ejecutan con un nivel de prioridad que puede cambiarse. Los números negativos aumentan la prioridad, siendo -20 la máxima prioridad.

  • nice -n -5 top ejecuta top con una prioridad más fuerte
  • nice -n 5 top ejecuta top con una prioridad más débil (también nice +5 top)
  • renice -5 586 cambia la prioridad de un proceso en ejecución

También se puede cambiar la prioridad de acceso a disco asignando una clase 1 (real time, tiempo real), 2 (best effort, mejor esfuerzo), o 3 (idle, inactivo).

  • ionice -c1 -p123 cambia la clase del proceso 123 a ‘real time’ (1)
  • ionice -c2 -n0 firefox ejecuta firefox con ‘best effort’ (2) y alta prioridad
  • ionice -c3 -p$$ cambia el terminal actual a ‘idle’ (3), y lanzará los comandos con una prioridad menor

Monitorización, estadísticas y depuración

  • top muestra los procesos ordenados por uso de CPU (pulsar h para ayuda)
  • htop muestra procesos y uso de CPU de forma gráfica en el terminal (h para ayuda)
  • mpstat 1 muestra estadísticas relativas a los procesadores (cada segundo)
  • strace -c ls >/dev/null muestra llamadas del sistema hechas y recibidas por un proceso
  • strace -f -e open ls >/dev/null muestra las llamadas a la librería
  • vmstat 2 muestra estadísticas relativas a la memoria virtual (cada 2 segundos)
  • iostat 2 muestra estadísticas de Entrada/Salida (cada 2 segundos)
  • watch -n1 ‘cat /proc/interrupts’ muestra interrupciones en tiempo real
  • ipcs -a muestra información de comunicación entre procesos
  • lsof -p $$ muestra una lista de ficheros abiertos por procesos
  • lsof /home/usuario1 muestra una lista de ficheros abiertos en un directorio dado
  • tail -n 500 /var/log/messages muestra los últimos 500 mensajes del sistema
  • lsmod muestra los módulos cargados por el kernel

Instalar en Debian, Ubuntu y derivados

Actualizador de paquetes APT

  • apt-get install package_name instala/actualiza un paquete deb
  • apt-cdrom install package_name instala/actualiza un paquete deb desde un cdrom
  • apt-get update actualiza la lista de paquetes
  • apt-get upgrade actualiza todos los paquetes instalados
  • apt-get remove package_name elimina un paquete deb del sistema
  • apt-get check verifica la correcta resolución de las dependencias
  • apt-get clean limpia la caché de paquetes descargados
  • apt-cache search searched-package devuelve la lista de paquetes correspondiente a «paquetes buscados»

Gestión de paquetes Deb

  • dpkg -i package.deb instala/actualiza un paquete deb
  • dpkg -r package_name elimina un paquete deb del sistema
  • dpkg -l muestra todos los paquetes deb instalados en el sistema
  • dpkg -l | grep httpd muestra todos los paquetes deb con el nombre httpd
  • dpkg -s package_name obtiene información en un paquete específico instalado en el sistema
  • dpkg -L package_name muestra la lista de ficheros dados por un paquete instalado en el sistema
  • dpkg –contents package.deb muestra la lista de ficheros dados por un paquete no instalado aún
  • dpkg -S /bin/ping verifica a qué paquete pertenece un fichero dado

Instalar en Red Hat, Fedora y similares

Actualizador de paquetes YUM

  • yum install package_name descarga e instala un paquete rpm
  • yum localinstall package_name.rpm este instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositorios
  • yum update package_name.rpm actualiza todos los paquetes rpm instalados en el sistema
  • yum update package_name moderniza / actualiza un paquete rpm
  • yum remove package_name elimina un paquete rpm
  • yum list lista todos los paquetes instalados en el sistema
  • yum search package_name encuentra un paquete en repositorio rpm
  • yum clean packages limpia un caché rpm borrando los paquetes descargados
  • yum clean headers elimina todos los ficheros de encabezamiento que el sistema usa para resolver la dependencia
  • yum clean all elimina desde los paquetes caché y ficheros de encabezado

Gestión de paquetes RPM

  • rpm -ivh package.rpm instala un paquete rpm
  • rpm -ivh –nodeeps package.rpm instala un paquete rpm ignorando las peticiones de dependencias
  • rpm -U package.rpm actualiza un paquete rpm sin cambiar la configuración de los ficheros
  • rpm -F package.rpm actualiza un paquete rpm solamente si este está instalado
  • rpm -e package_name.rpm elimina un paquete rpm
  • rpm -qa muestra todos los paquetes rpm instalados en el sistema
  • rpm -qa | grep httpd muestra todos los paquetes rpm con el nombre “httpd”
  • rpm -qi package_name obtiene información en un paquete específico instalado
  • rpm -qg “System Environment/Daemons” muestra los paquetes rpm de un grupo software
  • rpm -ql package_name muestra lista de ficheros dados por un paquete rpm instalado
  • rpm -qc package_name muestra lista de configuración de ficheros dados por un paquete rpm instalado
  • rpm -q package_name –whatrequires muestra lista de dependencias solicitada para un paquete rpm
  • rpm -q package_name –whatprovides muestra la capacidad dada por un paquete rpm
  • rpm -q package_name –scripts muestra los scripts comenzados durante la instalación /eliminación
  • rpm -q package_name –changelog muestra el historial de revisions de un paquete rpm
  • rpm -qf /etc/httpd/conf/httpd.conf verifica cuál paquete rpm pertenece a un fichero dado
  • rpm -qp package.rpm -l muestra lista de ficheros dados por un paquete rpm que aún no ha sido instalado
  • rpm –import /media/cdrom/RPM-GPG-KEY importa la firma digital de la llave pública
  • rpm –checksig package.rpm verifica la integridad de un paquete rpm
  • rpm -qa gpg-pubkey verifica la integridad de todos los paquetes rpm instalados
  • rpm -V package_name comprueba el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificación
  • rpm -Va comprueba todos los paquetes rpm instalados en el sistema. Usar con cuidado
  • rpm -Vp package.rpm verifica un paquete rpm no instalado todavía
  • rpm2cpio package.rpm | cpio –extract –make-directories *bin* extrae fichero ejecutable desde un paquete rpm
  • rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm instala un paquete construido desde una fuente rpm
  • rpmbuild –rebuild package_name.src.rpm construye un paquete rpm desde una fuente rpm

Proceso de arranque del sistema

  1. BIOS (Basic Input/Output System), en placa base, es el sistema básico que carga el MBR.
  2. MBR (Master Boot Record). Registro al inicio del disco con el sistema de arranque (GRUB/LILO).
  3. GRUB (GRand Unified Bootloader). Permite arrancar diferentes sistemas operativos.
  4. Kernel (Linux). Se carga en memoria y lanza el proceso de arranque /sbin/init con PID=1.
    • Se mantiene hasta el apagado.
    • Genera un kernel panic si falla al ejecutarse.
    • Es el padre de todos los procesos de primer nivel.
    • Si un proceso se queda sin padre, éste pasa a ser su padre.
  5. Init / Systemd. Lanza los procesos de arranque del sistema operativo.

Init

Tiene diferentes niveles de ejecución (runlevels) definidos en /etc/inittab. Los scripts de inicio se encuentran en /etc/init.d y vinculados en /etc/rc.d/rcN.d donde N es el nivel de ejecución.

Los scripts se ejecutan secuencialmente, hasta que un proceso no termina, no lanza el siguiente.

  • init 1 cambia al nivel de ejecución monousuario (también S)
  • init 2 cambia a multiusuario sin red
  • init 3 cambia a multiusuario con red
  • init 5 cambia a multiusuario con X
  • chkconfig --list lista todos los scripts de inicio
  • chkconfig --list sshd informa del estado del arranque de sshd
  • chkconfig sshd --level 35 on configura el arranque de sshd para los niveles 3 y 5
  • chkconfig sshd off deshabilita sshd en todo los niveles de ejecución

Systemd

Es un sistema de arranque más complejo que Init:

  • Comprueba /etc/systemd/system/default.target para saber qué hacer.
  • Un target define una serie de dependencias, que pueden tener dependencias a su vez.
  • Lanza las unidades en paralelo, las monitoriza y las relanza si fallan.

Las unidades pueden ser servicios (.service), puntos de montaje (.mount), dispositivos (.device) o sockets (.socket):

  • systemctl status muestra el estado del sistema
  • systemctl lista las unidades en ejecución (también systemctl list-units)
  • systemctl --failed lista las unidades que han fallado
  • systemctl list-unit-files muestra todos los archivos de las unidades instaladas

Los servicios se configuran en /etc/systemd/system, /usr/lib/systemd/system, usando ficheros .ini:

  • systemctl status sshd.service comprueba el estado del servicio sshd
  • systemctl start/stop/restart sshd.service arranca, detiene o reinicia sshd
  • systemctl reload sshd.service recarga la configuración del servicio sshd
  • systemctl enable/disable sshd.service habilita o deshabilita sshd
  • systemctl list-dependencies sshd.service lista las dependencias de sshd

Utilidades

Compresión y empaquetado de ficheros

  • bzip2 file1 comprime un fichero con BZIP2
  • bunzip2 file1.bz2 descomprime un fichero BZIP2
  • gzip file1 comprime un fichero con GZIP
  • gzip -9 file1 comprime un fichero con GZIP y compresión máxima
  • gunzip file1.gz descomprime un fichero GZIP
  • zip file1.zip file1 comprime un fichero con ZIP
  • zip -r file1.zip file1 file2 dir1 comprime varios ficheros y directorios de forma simultánea
  • unzip file1.zip descomprime un fichero ZIP
  • rar a file1.rar test_file comprime un fichero con RAR
  • rar a file1.rar file1 file2 dir1 comprime file1, file2 y dir1 simultáneamente
  • rar x file1.rar descomprime un fichero RAR (también sirve unrar)
  • tar -cvf archive.tar file1 file2 dir1 empaqueta en un fichero TAR los archivos file1, file2 y el directorio dir1
  • tar -tf archive.tar muestra los contenidos de un fichero TAR
  • tar -xvf archive.tar extrae los archivos y directorios de un fichero TAR
  • tar -xvf archive.tar -C /tmp extrae los archivos y directorios de un fichero TAR en /tmp
  • tar -cvfj archive.tar.bz2 dir1 crea un fichero TAR comprimido con BZIP2
  • tar -xvfj archive.tar.bz2 descomprime un fichero TAR comprimido con BZIP2
  • tar -cvfz archive.tar.gz dir1 crea un fichero TAR comprimido con GZIP
  • tar -xvfz archive.tar.gz descomprime un fichero TAR comprimido con GZIP

Copias de seguridad

  • dump -0aj -f /tmp/home0.bak /home hace una copia completa del directorio /home
  • dump -1aj -f /tmp/home0.bak /home hace una copia incremental del directorio /home
  • restore -if /tmp/home0.bak restaura una copia interactivamente
  • rsync -rogpav –delete /home /tmp sincroniza entre directorios
  • rsync -rogpav -e ssh –delete /home ip_address:/tmp sincroniza usando ssh
  • rsync -az -e ssh –delete ip_addr:/home/public /home/local sincroniza un directorio local con un directorio remoto usando ssh con compresión
  • rsync -az -e ssh –delete /home/local ip_addr:/home/public sincroniza un directorio remoto con un directorio local usando ssh con compresión
  • dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’ hace una copia de un disco duro en un host remoto usando ssh
  • dd if=/dev/sda of=/tmp/file1 copia el contenido de un disco duro sda a un fichero file1
  • tar -Puf backup.tar /home/user hace una copia incremental del directorio /home/user
  • ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’ copia el contenido de un directorio en un directorio remoto usando ssh
  • ( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’ copia un directorio local en un directorio remoto usando ssh
  • tar cf – . | (cd /tmp/backup ; tar xf – ) copia local manteniendo enlaces
  • find /home/user1 -name ‘*.txt’ | xargs cp -av –target-directory=/home/backup/ –parents copia de un directorio a otro todos los ficheros con extensión ‘.txt’
  • find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 > log.tar.bz2 crea un archivo BZIP2 con todos los ficheros con extensión ‘.log’
  • dd if=/dev/hda of=/dev/fd0 bs=512 count=1 hace una copia del MRB (Master Boot Record) a un disquete
  • dd if=/dev/fd0 of=/dev/hda bs=512 count=1 restaura la copia del MBR (Master Boot Record) de un disquete

Ver el contenido de un fichero

  • cat file1 muestra los contenidos de un fichero desde la primera línea
  • tac file1 muestra los contenidos de un fichero comenzando por la última línea
  • more file1 muestra el contenido a lo largo de un fichero
  • less file1 parecido a more pero con más versatilidad en la presentación
  • head -n 5 file1 muestra las cinco primeras líneas de un fichero (diez si no se indica -n 5)
  • tail -n 8 file1 muestra las ocho últimas líneas de un fichero (diez si no se indica -n 8)
  • tail -f /var/log/messages muestra en tiempo real cada línea que se añade al fichero
  • tail -f /var/log/messages | grep cadena muestra cada línea que se añade si contiene cadena
  • wc fic1 cuenta el número de líneas, palabras y bytes que tiene un archivo
  • zcatzmore, zless, zgrep funcionan como sus equivalentes pero con archivos de texto comprimidos

Manipulación de texto

  • cat file1 file2 .. | command <> file1_in.txt_or_file1_out.txt sintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUT
  • cat file1 | command( sed, grep, awk, grep, etc…) > result.txt sintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevo
  • cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt sintaxis general para manipular un texto de un fichero y añadir el resultado en un fichero existente
  • grep Aug /var/log/messages busca la cadena “Aug” en el fichero ‘/var/log/messages’
  • grep ^Aug /var/log/messages busca palabras que comienzan con “Aug” en el fichero ‘/var/log/messages’
  • grep [0-9] /var/log/messages selecciona todas las líneas del fichero ‘/var/log/messages’ que contienen números
  • grep Aug -R /var/log/* busca la cadena “Aug” en el árbol del directorio ‘/var/log’
  • sed ‘s/stringa1/stringa2/g’ example.txt reemplaza “string1” por “string2” en ejemplo.txt
  • sed ‘/^$/d’ example.txt elimina todas las líneas en blanco del fichero ejemplo.txt
  • sed ‘/ *#/d; /^$/d’ example.txt elimina comentarios y líneas en blanco del fichero ejemplo.txt
  • echo ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’ convierte minúsculas en mayúsculas
  • sed -e ‘1d’ result.txt elimina la primera línea del fichero ejemplo.txt
  • sed -n ‘/stringa1/p’ visualiza solamente las líneas que contienen la palabra “string1”

Conversión de ficheros

  • iconv -f codificación1 -t codificación2 fic1 > fic2 convierte el fichero fic1 asumiendo que usa la «codificación1» de caracteres a fic2 con «codificacion2»
  • iconv -l | more lista las tablas de codificación de caracteres disponibles
  • recode ..HTML < page.txt > page.HTML convierte un fichero de texto en HTML
  • recode -l | more muestra todas las conversiones de formato disponibles
  • dos2unix filedos.txt fileunix.txt convierte el formato de un fichero de texto MSDOS a UNIX
  • unix2dos fileunix.txt filedos.txt convierte el formato de un fichero de texto UNIX a MSDOS
  • find . -maxdepth 1 -name *.jpg -print -exec convert ”{}” -resize 80×60 “thumbs/{}” \; redimensiona las imágenes JPG del directorio actual y las guarda en un directorio de miniaturas (requiere ImagemagicK)

Uso de la unidad CD/DVD

  • cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force limpia o borra un cd regrabable
  • mkisofs /dev/cdrom > cd.iso crea una imagen iso de cdrom en disco
  • mkisofs /dev/cdrom | gzip > cd_iso.gz crea una imagen comprimida iso de cdrom en disco
  • mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd crea una imagen iso de un directorio
  • cdrecord -v dev=/dev/cdrom cd.iso graba una imagen iso
  • gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom – graba una imagen iso comprimida
  • mount -o loop cd.iso /mnt/iso monta una imagen iso
  • cd-paranoia -B lleva canciones de un cd a ficheros WAV
  • cd-paranoia – ”-3” lleva las 3 primeras canciones de un cd a ficheros WAV
  • cdrecord –scanbus escanea el bus para identificar el canal scsi
  • dd if=/dev/hdc | md5sum aplica un md5sum en un dispositivo, como un CD
  • who -a muestra, entre otros datos, la hora del último arranque del sistema y su nivel de inicio; procesos activos lanzados por init, procesos muertos, y quién ha iniciado sesión

Otros comandos útiles

  • apropos … término muestra comandos asociados a uno o más términos; útil si se sabe qué hace pero no el nombre
  • man ping muestra el manual de un comando; usar -k para encontrar cualquier comando relacionado
  • whatis comando muestra un resumen de la función del comando
  • mkbootdisk –device /dev/fd0 `uname -r` crea un floppy boteable
  • gpg -c file1 codifica un fichero con cifrado GNU Privacy Guard
  • gpg file1.gpg decodifica un fichero cifrado con GNU Privacy Guard
  • wget -r www.example.com descarga los recursos de un dominio web completo
  • wget -c www.example.com/file.iso descarga un fichero con la posibilidad de parar y reanudar más adelante
  • echo ‘wget -c www.example.com/files.iso‘ | at 09:00 comienza una descarga a las 9 horas
  • ldd /usr/bin/ssh muestra las bibliotecas compartidas requeridas por el programa ssh
  • alias hh=’history’ crea un alias para que, por ejemplo, –hh sea –history
  • chsh cambia el comando de la terminal
  • chsh –list-shells es un comando adecuado para saber si tienes que hacer remoto en otra terminal

Referencias

0 comentarios

Dejar un comentario

¿Quieres unirte a la conversación?
Siéntete libre de contribuir!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *