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_3ejecuta múltiples comandos en una líneacmd_1 && cmd_2ejecuta múltiples comandos sólo si el previo fue exitosoCTRL+R término_buscadobusca comandos anteriores por un términoCTRL+Amueve el cursor al inicio de la líneaCTRL+Emueve el cursor al final de la líneasudo !!ejecuta un comando como root (!!repite el último comando escrito)cd !$con!$repite el último argumento del comando anteriorALT+.añade el último argumento de comandos previos pulsando.- Usar
TABpara autocompletar con la lista de entradas del directorio actual
Primer y segundo plano
CTRL+Zsuspende (detiene) y pasa a segundo plano el proceso actualjobs -llista procesos en segundo plano (+señala proceso por defecto)bgcontinúa la ejecución en segundo plano del proceso por defectofg %2trae a primer plano el proceso [2] de la lista
disown -h %1disocia el proceso [1] y no se eliminará al cerrar sesiónping -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
cd /var/logcambia al directorio/var/logcdcambia al directorio$HOMEdel usuariocd ..retrocede al directorio anterior al que te encuentrascd ../..retrocede dos nivelescd -regresa al directorio de trabajo anteriorpwdmuestra la ruta del directorio actuallslista las entradas del directorio actualls -lalista detallada (-l) y entradas ocultas que empiezan por.(-a)ls -la | grep cadenalista las entradas que contienencadenals -lhlista detallada y legible para humanosls *[0-9]*lista las entradas que contienen númerosls -Flista las entradas añadiendo un indicador de tipo a cada unals -Slista los archivos por tamaño, de mayor a menortreemuestra los ficheros y carpetas en forma de árbol (tambiénlstree)
Información básica del sistema
uname -a(abreviatura de Unix name) muestra información sobre el sistemauname -rsólo muestra la versión del kerneluname -mmuestra el tipo de arquitectura de la máquina (tambiénarch)lsb_release -amuestra información sobre la instalación LSB (Linux Standard Base)cat /proc/versionmuestra información completa de la versión del kernelhostnamemuestra el nombre del servidor
uptimemuestra cuánto tiempo lleva funcionando el sistemalast rebootmuestra el historial de reinicios
Fecha y hora
datemuestra la fecha del sistemacal 2019despliega el calendario de 2019cal 07 2019muestra sólo el mes julio de 2019date 041217002011.00ajusta fecha y hora del sistemaclock -wguarda los cambios de fecha en la BIOS
Apagar el sistema
shutdown -h nowinit 0telinit 0haltsystemctl poweroffsystemctl suspendpone el sistema en modo de bajo consumosystemctl hibernateguarda 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:15pmshutdown -ccancela un apagado planificado del sistema
Reiniciar el sistema
shutdown -r nowrebootsystemctl reboot
Cerrar la sesión
logout
Sistema de ficheros y uso del disco
Ficheros y directorios
mkdir dir1crea un directorio con nombredir1mkdir dir1 dir2crea dos directorios simultáneamentemkdir -p /tmp/dir1/dir2crea un árbol de directorios
rm -f fic1borra el ficherofic1rm -rf dir1elimina recursivamente el contenido del directoriodir1rm -rf dir1 dir2borra dos directorios con todo su contenidorm -ri dir1borra un directorio y todo su contenido de forma interactivamv dir1 nuevo_dir1renombra o mueve un fichero o directoriormdir dir1borra el directoriodir1
cp fic1 fic2copia el ficherofic1afic2(reemplazafic2si ya existía)cp dir1/* .copia el contenido dedir1en el directorio actualcp -r dir1/* dir2copia recursivamente el contenido dedir1en otro directoriocp -a /tmp/dir1 .copia un directorio en el directorio actualcp -a dir1 dir2copia el directoriodir1adir2(reemplaza los contenidos dedir2que ya existiesen endir1)
ln -s fic1 lnk1crea un enlace simbólico al fichero o directorioln fic1 lnk1crea un enlace físico al fichero o directorio
touch fic1crea un fichero vacío, o lo trunca si ya existetouch -t 0712250000 fic1modifica el tiempo de creación de un fichero o directoriofile fic1muestra las características MIME de un fichero
Buscar ficheros
find / -name fic1busca un fichero/directorio desde la raíz del sistemafind / -user usuario1busca ficheros y directorios pertenecientes al usuariousuario1find /home/usuario1 -name \*.binbusca ficheros con extensión.bindentro del directorio/home/usuario1find /usr/bin -type f -atime +100busca ficheros binarios no usados en los últimos 100 díasfind /usr/bin -type f -mtime -10busca ficheros creados o cambiados en los últimos 10 díasfind / -name \*.rpm -exec chmod 755 ‘{}’ \;busca ficheros con extensión.rpmy modifica sus permisosfind / -xdev -name \*.rpmbusca ficheros con extensión.rpmignorando los dispositivos removibles como pendrives, cd’s, etc…
locate \*.psbusca ficheros con extensión.pspreviamente indexados porupdatedbwhereis haltmuestra la ubicación de un fichero binario, de ayuda o fuente (en este caso pregunta por el comandohalt)which haltmuestra el camino a un fichero binario/ejecutable
Montar un sistema de ficheros
mount /dev/hda2 /mnt/hda2monta la particiónhda2(debe existir el directorio/mnt/hda2)umount /dev/hda2desmonta la particiónhda2(hay que salir primero de/mnt/hda2)fuser -km /mnt/hda2obliga a desmontar cuando el dispositivo está ocupadoumount -n /mnt/hda2desmonta sin leer/etc/mtab(útil si es de solo lectura o el disco duro está lleno)mount /dev/cdrom /mnt/cdrommonta un lector de cd/dvdmount /dev/hdc /mnt/cdrecordermonta un grabador de cd/dvdmount -o loop file.iso /mnt/cdrommonta un fichero o una imagen ISOmount -t vfat /dev/hda5 /mnt/hda5monta un sistema de ficheros FAT32mount /dev/sda1 /mnt/usbdiskmonta 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/hda1comprueba los bloques defectuosos en la particiónhda1fsck /dev/hda1comprueba (repara) la integridad del sistema de ficheros existente enhda1fsck.ext2 /dev/hda1comprueba (repara) la integridad del sistema de ficheros ext2 enhda1e2fsck /dev/hda1comprueba (repara) la integridad del sistema de ficheros ext2 enhda1e2fsck -j /dev/hda1comprueba (repara) la integridad del sistema de ficheros ext3 (journal) enhda1fsck.ext3 /dev/hda1comprueba (repara) la integridad del sistema de ficheros ext3 enhda1fsck.vfat /dev/hda1comprueba (repara) la integridad del sistema de ficheros FAT32 enhda1fsck.msdos /dev/hda1comprueba (repara) la integridad de un sistema de ficheros DOS enhda1dosfsck /dev/hda1comprueba (repara) la integridad de un sistema de ficheros DOS enhda1
Espacio en disco
df -hmuestra las particiones montadas y el espacio de disco disponiblels -lSr | moremuestra el tamaño de los ficheros y directorios ordenados por tamañodu -sh dir1estima el espacio usado por el directoriodir1du -sk * | sort -rnmuestra el tamaño de los ficheros y directorios ordenados por tamañorpm -q -a –qf '%10{SIZE}t%{NAME}n' | sort -k1,1nmuestra 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,1nmuestra 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|fic1donde MODO es[ugoa]*([-+=]([rwxXst]))y a=ugochmod u=rw,g=r,o= fic1restringe el archivofic1a-rw-r-----, igual quechmod 640 fic1chmod a+rwx dir1asigna adir1permisos de lectura, escritura y ejecución para todos los usuarioschmod go-rwx dir1quita adir1los permisos de lectura, escritura y ejecución para el grupo y otroschmod -R o-r /home/*quita recursivamente el permiso de lectura para otros usuarios a todo/home
chmod u+s /bin/fic1activa SUID en un binario (el usuario ejecutará con los privilegios del propietario)chmod u-s /bin/fic1desactiva el bit SUID en un fichero binariochmod g+s /home/pubactiva SGID en un directorio (cambia el privilegio de ejecución según el grupo del fichero)chmod g-s /home/pubdesactiva el bit SGID en un directoriochmod +t /home/pubactiva STICKY en un directorio (sólo dejará renombrar o borrar ficheros al propietario)chmod -t /home/pubdesactiva el bit STICKY de un directorio
chown usuario1 fic1cambia el propietario del ficherofic1ausuario1chown -R usuario1 dir1cambia el propietario del directoriodir1y de los ficheros y directorios contenidoschgrp grupo1 fic1cambia el grupo del ficherofic1agrupo1chown usuario1:grupo1 fic1cambia el propietario y el grupo del ficherofic1chown usuario1: fic1igual quechown usuario1:usuario1 fic1(si coincide nombre de usuario y grupo)
find / -perm -u+s -printbusca 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 fic1permite escribir en un fichero sólo añadiendo (modo «append»)chattr +c fic1hace que un fichero sea descomprimido/comprimido automáticamente al leer/escribirchattr +d fic1para que el archivo no sea candidato para respaldo al usardumpchattr +i fic1hace inmutable el fichero y no podrá ser eliminado, alterado, renombrado ni enlazadochattr +s fic1permite que un fichero sea borrado de forma segura y definitivachattr +S fic1asegura que los cambios serán escritos inmediatamente en el disco, en modo síncronochattr +u fic1permite recuperar con las herramientas adecuadas un fichero una vez borradolsattrmuestra los atributos especiales de cada fichero del listado
Formatear un sistema de ficheros
mkfs.ext4 /dev/hda1crea un sistema de ficheros tipo Linux ext4 en la particiónhda1mke2fs /dev/hda1crea un sistema de ficheros tipo Linux ext2 enhda1mke2fs -j /dev/hda1crea un sistema de ficheros tipo Linux ext3 (journal) enhda1mkfs -t vfat 32 -F /dev/hda1crea un sistema de ficheros FAT32 enhda1mkswap /dev/hda3crea un área de intercambio (swap) enhda3
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_grupocon 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/fstabpara hacer permanentes los cambios:$ vi /etc/fstab /dev/vg_grupo/lv1_volumen /mnt/volumen jfs defaults 0 0 :wq! vgscananaliza dispositivos de bloque LVM admitidos en el sistema en busca de VGvgscan --mknodesademás comprueba/devpara crear (si no existen) o eliminar (si no son necesarios) los archivos especiales para activar los LVvgchange -ay vg_grupoactiva los LV del VGvg_grupo(si no se indica ningún grupo se activan todos los LV)lvsmuestra información de los volúmenes lógicos (1)lvdisplaymuestra información de los volúmenes lógicos (2)mount /dev/vg_grupo/lv_volumen /mnt/grupo/volumenmonta un volumen lógico de un grupo de volúmenes en/mnt/grupo/volumen
El área de intercambio (swap)
mkswap /dev/hda3crea un sistema de ficheros para intercambio (área swap)swapon /dev/hda3activa una nueva partición de intercambio (swap)swapon /dev/hda2 /dev/hdb3activa dos particiones de intercambio (swap)
Redes
LAN y WiFi
ifconfig eth0muestra la configuración de la interfazeth0ifup eth0habilita la interfazeth0ifdown eth0deshabilita la interfazeth0ifconfig eth0 192.168.1.1 netmask 255.255.255.0configura la dirección IP deeth0ifconfig eth0 promiscconfiguraeth0para obtener los paquetes (sniffing)
dhclient eth0activa la interfazeth0en modo DHCPecho “1” > /proc/sys/net/ipv4/ip_forwardactiva el enrutado de IP (como si fuese un router)
route -nmuestra mesa de recorridoroute add -net 0/0 gw IP_Gatewayconfigura entrada predeterminadaroute add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1configura una ruta estática para buscar la red ‘192.168.0.0/16’route del 0/0 gw IP_gatewayelimina una ruta estática
hostname -imuestra la dirección IP del servidor (sólo Linux)host www.example.combusca el nombre del host para resolver el nombre a una dirección IP (1)nslookup www.example.combusca el nombre del host para resolver el nombre a una dirección IP y viceversa (2)ping 192.168.0.100comprueba si está accesible o habilitada la respuesta de una IPip link showmuestra el estado de enlace de todas las interfacesmii-tool eth0muestra el estado de enlace de ‘eth0’ethtool eth0muestra las estadísticas de tarjeta de red ‘eth0’netstat -imuestra las interfaces de red y su estadonetstat -tupmuestra todas las conexiones de red activas y sus PIDnetstat -tuplmuestra todos los servicios de escucha de red en el sistema y sus PIDtcpdump tcp port 80muestra todo el tráfico HTTPiwlist scanmuestra las redes inalámbricasiwconfig eth1muestra la configuración de una tarjeta de red inalámbricawhois www.example.combusca en base de datos Whois
SAMBA, redes de Microsoft Windows
nbtscan ip_addrresuelve nombres de la red BIOSnmblookup -A ip_addrresuelve nombres de la red BIOSsmbclient -L ip_addr/hostnamemuestra acciones remotas de un host en Windows
Tablas IP (cortafuegos)
iptables -t filter -Lmuestra todas las cadenas de la tabla de filtrosiptables -t nat -Lmuestra todas las cadenas de la tabla NATiptables -t filter -Flimpia todas las reglas de la tabla de filtrosiptables -t nat -Flimpia todas las reglas de la tabla NATiptables -t filter -Xborra cualquier cadena creada por el usuarioiptables -t filter -A INPUT -p tcp –dport telnet -j ACCEPTpermite las conexiones telnet para entrariptables -t filter -A OUTPUT -p tcp –dport http -j DROPbloquea las conexiones HTTP para saliriptables -t filter -A FORWARD -p tcp –dport pop3 -j ACCEPTpermite las conexiones POP a una cadena delanteraiptables -t filter -A INPUT -j LOG –log-prefix “DROP INPUT”registra una cadena de entradaiptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEconfigura un PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida forzadaiptables -t nat -A PREROUTING -d 192.168.0.1 -p tcp -m tcp –dport 22 -j DNAT –to-destination 10.0.0.2:22redirecciona los paquetes dirigidos de un host a otro
Administración del sistema
Información del hardware del sistema
dmesgmuestra el hardware detectado durante el arranque del sistemalsdevmuestra información del hardware instaladodmidecode -qmuestra información del hardware desde la BIOS (DMI/SMBIOS)hwinfomuestra información detallada de CPU, memoria, disco, controladores…lspci -tvlista los dispositivos conectados vía PCIlsusb -tvmuestra los dispositivos USBcat /proc/scsi/scsilista los dispositivos scsi (tambiénlsscsi)
cat /proc/cpuinfomuestra información completa de la CPU (tambiénlscpu)cat /proc/net/devmuestra adaptadores de red disponibles y estadísticas
cat /proc/meminfocomprueba el uso de la memoriafree -mmuestra el estado de la memoria en megabytes
Información particiones y discos
cat /proc/swapsmuestra los archivos de intercambio (swap)cat /proc/mountsmuestra los sistemas de ficheros montadoscat /proc/partitionsmuestra todas las particiones registradasmount | column -tlista los sistemas de ficheros montados en el sistema
hdparm -I /dev/hdamuestra información obtenida directamente del discohdparm -tT /dev/sdarealiza una prueba de lectura en un disco duro
fdisk -lmuestra las tablas de partición ordenadas por nombre del dispositivofdisk -l /dev/sdbsólo muestra las particiones del disco indicadofdisk /dev/sdbmuestra todas las opciones con un disco (usarmpara listar comandos disponibles)
lsblk -fmmuestra un diagrama de los dispositivos de bloques (particiones de discos y otros dispositivos)
smartctl -i /dev/hdacomprueba si SMART está activado en un disco duro y muestra su información básicasmartctl -a /dev/hdamuestra toda la información SMART de un disco duro
Usuarios y grupos
idmuestra el identificador del usuario activo con su inicio de sesión y grupolastmuestra los últimos inicios de sesión en el sistemawhomuestra quién ha iniciado sesión en el sistemaecho "Acceso al sistema limitado" > /etc/nologinevita temporalmente los inicios de sesión en el sistema (excepto para root)newgrp nombre_grupoinicia sesión con un nuevo grupo y puede cambiar el grupo predeterminado del actual directorio de trabajo
groupadd nombre_grupocrea un nuevo grupogroupdel nombre_grupoborra un grupogroupmod -n nuevo_nombre_grupo anterior_nombre_gruporenombra un grupo
useradd -c "Nombre Apellidos" -g admin -d /home/nombre_usuario -s /bin/bash nombre_usuariocrea un nuevo usuario perteneciente al grupo adminuseradd nombre_usuariocrea un nuevo usuariouserdel -r nombre_usuarioborra un usuario (-relimina el directoriohome)usermod -c "Usuario FTP" -g system -d /ftp/nombre_usuario -s /bin/nologin nombre_usuariocambia los atributos del usuario
passwdcambia la contraseña (las contraseñas cifradas se almacenan en/etc/shadow)passwd nombre_usuariocambia la contraseña de un usuario (sólo por root)chage -E 2021-12-31 nombre_usuariopone plazo a la contraseña de un usuario (en el ejemplo la contraseña expira el 31 de diciembre de 2021)pwckcomprueba la sintaxis y el formato del fichero/etc/passwdy la existencia de usuariosgrpckcomprueba la sintaxis y el formato del fichero/etc/groupy la existencia de grupos
Límites definidos
ulimit -amuestra los límites definidos en el terminal o script actualulimit -n 10240modifica el límite máximo de ficheros abiertos por el terminal o script
cat /etc/security/limits.confcomprueba los límites definidos para usuarios y aplicaciones
sysctl -amuestra todos los límites definidos en el sistema (ver/etc/sysctl.conf)sysctl fs.file-maxmuestra el número máximo posible de ficheros abiertos por el sistemasysctl fs.file-max=10240modifica el límite máximo posible de ficheros abiertos por el sistema
Procesos
ps -auxefwlista con información detallada de procesos en vista jerárquicaps -e -o pid,args –-forestmuestra los procesos en una vista jerárquicapstreemuestra un árbol con los procesospgrep -l sshddevuelve PID de procesos filtrados por (parte del) nombrefuser -va 22/tcplista los procesos que están usando el puerto 22fuser -va /homelista los procesos que están accediendo a la partición/home
echo $$muestra el identificador de proceso (PID) de el terminal actualkill -9 id_procesofuerza la finalización de un proceso (tambiénkill -s KILL id_proceso)kill -15 id_procesoenvía señal de finalización software (SIGTERM)fuser -k -TERM -m /homefinaliza los procesos que están accediendo a/home(p.e. paraumount)
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 topejecutatopcon una prioridad más fuertenice -n 5 topejecutatopcon una prioridad más débil (tambiénnice +5 top)renice -5 586cambia 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 -p123cambia la clase del proceso 123 a ‘real time’ (1)ionice -c2 -n0 firefoxejecuta firefox con ‘best effort’ (2) y alta prioridadionice -c3 -p$$cambia el terminal actual a ‘idle’ (3), y lanzará los comandos con una prioridad menor
Monitorización, estadísticas y depuración
topmuestra los procesos ordenados por uso de CPU (pulsarhpara ayuda)htopmuestra procesos y uso de CPU de forma gráfica en el terminal (hpara ayuda)mpstat 1muestra estadísticas relativas a los procesadores (cada segundo)
strace -c ls >/dev/nullmuestra llamadas del sistema hechas y recibidas por un procesostrace -f -e open ls >/dev/nullmuestra las llamadas a la librería
vmstat 2muestra estadísticas relativas a la memoria virtual (cada 2 segundos)iostat 2muestra estadísticas de Entrada/Salida (cada 2 segundos)watch -n1 ‘cat /proc/interrupts’muestra interrupciones en tiempo realipcs -amuestra información de comunicación entre procesos
lsof -p $$muestra una lista de ficheros abiertos por procesoslsof /home/usuario1muestra una lista de ficheros abiertos en un directorio dado
tail -n 500 /var/log/messagesmuestra los últimos 500 mensajes del sistemalsmodmuestra los módulos cargados por el kernel
Instalar en Debian, Ubuntu y derivados
Actualizador de paquetes APT
apt-get install package_nameinstala/actualiza un paquete debapt-cdrom install package_nameinstala/actualiza un paquete deb desde un cdromapt-get updateactualiza la lista de paquetesapt-get upgradeactualiza todos los paquetes instaladosapt-get remove package_nameelimina un paquete deb del sistemaapt-get checkverifica la correcta resolución de las dependenciasapt-get cleanlimpia la caché de paquetes descargadosapt-cache search searched-packagedevuelve la lista de paquetes correspondiente a «paquetes buscados»
Gestión de paquetes Deb
dpkg -i package.debinstala/actualiza un paquete debdpkg -r package_nameelimina un paquete deb del sistemadpkg -lmuestra todos los paquetes deb instalados en el sistemadpkg -l | grep httpdmuestra todos los paquetes deb con el nombrehttpddpkg -s package_nameobtiene información en un paquete específico instalado en el sistemadpkg -L package_namemuestra la lista de ficheros dados por un paquete instalado en el sistemadpkg –contents package.debmuestra la lista de ficheros dados por un paquete no instalado aúndpkg -S /bin/pingverifica a qué paquete pertenece un fichero dado
Instalar en Red Hat, Fedora y similares
Actualizador de paquetes YUM
yum install package_namedescarga e instala un paquete rpmyum localinstall package_name.rpmeste instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositoriosyum update package_name.rpmactualiza todos los paquetes rpm instalados en el sistemayum update package_namemoderniza / actualiza un paquete rpmyum remove package_nameelimina un paquete rpmyum listlista todos los paquetes instalados en el sistemayum search package_nameencuentra un paquete en repositorio rpmyum clean packageslimpia un caché rpm borrando los paquetes descargadosyum clean headerselimina todos los ficheros de encabezamiento que el sistema usa para resolver la dependenciayum clean allelimina desde los paquetes caché y ficheros de encabezado
Gestión de paquetes RPM
rpm -ivh package.rpminstala un paquete rpmrpm -ivh –nodeeps package.rpminstala un paquete rpm ignorando las peticiones de dependenciasrpm -U package.rpmactualiza un paquete rpm sin cambiar la configuración de los ficherosrpm -F package.rpmactualiza un paquete rpm solamente si este está instaladorpm -e package_name.rpmelimina un paquete rpmrpm -qamuestra todos los paquetes rpm instalados en el sistemarpm -qa | grep httpdmuestra todos los paquetes rpm con el nombre “httpd”rpm -qi package_nameobtiene información en un paquete específico instaladorpm -qg “System Environment/Daemons”muestra los paquetes rpm de un grupo softwarerpm -ql package_namemuestra lista de ficheros dados por un paquete rpm instaladorpm -qc package_namemuestra lista de configuración de ficheros dados por un paquete rpm instaladorpm -q package_name –whatrequiresmuestra lista de dependencias solicitada para un paquete rpmrpm -q package_name –whatprovidesmuestra la capacidad dada por un paquete rpmrpm -q package_name –scriptsmuestra los scripts comenzados durante la instalación /eliminaciónrpm -q package_name –changelogmuestra el historial de revisions de un paquete rpmrpm -qf /etc/httpd/conf/httpd.confverifica cuál paquete rpm pertenece a un fichero dadorpm -qp package.rpm -lmuestra lista de ficheros dados por un paquete rpm que aún no ha sido instaladorpm –import /media/cdrom/RPM-GPG-KEYimporta la firma digital de la llave públicarpm –checksig package.rpmverifica la integridad de un paquete rpmrpm -qa gpg-pubkeyverifica la integridad de todos los paquetes rpm instaladosrpm -V package_namecomprueba el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificaciónrpm -Vacomprueba todos los paquetes rpm instalados en el sistema. Usar con cuidadorpm -Vp package.rpmverifica un paquete rpm no instalado todavíarpm2cpio package.rpm | cpio –extract –make-directories *bin*extrae fichero ejecutable desde un paquete rpmrpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpminstala un paquete construido desde una fuente rpmrpmbuild –rebuild package_name.src.rpmconstruye un paquete rpm desde una fuente rpm
Proceso de arranque del sistema
- BIOS (Basic Input/Output System), en placa base, es el sistema básico que carga el MBR.
- MBR (Master Boot Record). Registro al inicio del disco con el sistema de arranque (GRUB/LILO).
- GRUB (GRand Unified Bootloader). Permite arrancar diferentes sistemas operativos.
- Kernel (Linux). Se carga en memoria y lanza el proceso de arranque
/sbin/initcon 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.
- 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 1cambia al nivel de ejecución monousuario (tambiénS)init 2cambia a multiusuario sin redinit 3cambia a multiusuario con redinit 5cambia a multiusuario con X
chkconfig --listlista todos los scripts de iniciochkconfig --list sshdinforma del estado del arranque de sshdchkconfig sshd --level 35 onconfigura el arranque de sshd para los niveles 3 y 5chkconfig sshd offdeshabilita sshd en todo los niveles de ejecución
Systemd
Es un sistema de arranque más complejo que Init:
- Comprueba
/etc/systemd/system/default.targetpara 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 statusmuestra el estado del sistemasystemctllista las unidades en ejecución (tambiénsystemctl list-units)systemctl --failedlista las unidades que han falladosystemctl list-unit-filesmuestra 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.servicecomprueba el estado del servicio sshdsystemctl start/stop/restart sshd.servicearranca, detiene o reinicia sshdsystemctl reload sshd.servicerecarga la configuración del servicio sshdsystemctl enable/disable sshd.servicehabilita o deshabilita sshdsystemctl list-dependencies sshd.servicelista las dependencias de sshd
Utilidades
Compresión y empaquetado de ficheros
bzip2 file1comprime un fichero con BZIP2bunzip2 file1.bz2descomprime un fichero BZIP2gzip file1comprime un fichero con GZIPgzip -9 file1comprime un fichero con GZIP y compresión máximagunzip file1.gzdescomprime un fichero GZIPzip file1.zip file1comprime un fichero con ZIPzip -r file1.zip file1 file2 dir1comprime varios ficheros y directorios de forma simultáneaunzip file1.zipdescomprime un fichero ZIPrar a file1.rar test_filecomprime un fichero con RARrar a file1.rar file1 file2 dir1comprimefile1,file2ydir1simultáneamenterar x file1.rardescomprime un fichero RAR (también sirveunrar)
tar -cvf archive.tar file1 file2 dir1empaqueta en un fichero TAR los archivosfile1,file2y el directoriodir1tar -tf archive.tarmuestra los contenidos de un fichero TARtar -xvf archive.tarextrae los archivos y directorios de un fichero TARtar -xvf archive.tar -C /tmpextrae los archivos y directorios de un fichero TAR en/tmptar -cvfj archive.tar.bz2 dir1crea un fichero TAR comprimido con BZIP2tar -xvfj archive.tar.bz2descomprime un fichero TAR comprimido con BZIP2tar -cvfz archive.tar.gz dir1crea un fichero TAR comprimido con GZIPtar -xvfz archive.tar.gzdescomprime un fichero TAR comprimido con GZIP
Copias de seguridad
dump -0aj -f /tmp/home0.bak /homehace una copia completa del directorio/homedump -1aj -f /tmp/home0.bak /homehace una copia incremental del directorio/homerestore -if /tmp/home0.bakrestaura una copia interactivamente
rsync -rogpav –delete /home /tmpsincroniza entre directoriosrsync -rogpav -e ssh –delete /home ip_address:/tmpsincroniza usando sshrsync -az -e ssh –delete ip_addr:/home/public /home/localsincroniza un directorio local con un directorio remoto usando ssh con compresiónrsync -az -e ssh –delete /home/local ip_addr:/home/publicsincroniza 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 sshdd if=/dev/sda of=/tmp/file1copia el contenido de un disco duro sda a un fichero file1tar -Puf backup.tar /home/userhace 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 sshtar cf – . | (cd /tmp/backup ; tar xf – )copia local manteniendo enlacesfind /home/user1 -name ‘*.txt’ | xargs cp -av –target-directory=/home/backup/ –parentscopia de un directorio a otro todos los ficheros con extensión ‘.txt’find /var/log -name ‘*.log’ | tar cv –files-from=- | bzip2 > log.tar.bz2crea un archivo BZIP2 con todos los ficheros con extensión ‘.log’dd if=/dev/hda of=/dev/fd0 bs=512 count=1hace una copia del MRB (Master Boot Record) a un disquetedd if=/dev/fd0 of=/dev/hda bs=512 count=1restaura la copia del MBR (Master Boot Record) de un disquete
Ver el contenido de un fichero
cat file1muestra los contenidos de un fichero desde la primera líneatac file1muestra los contenidos de un fichero comenzando por la última líneamore file1muestra el contenido a lo largo de un ficheroless file1parecido amorepero con más versatilidad en la presentaciónhead -n 5 file1muestra las cinco primeras líneas de un fichero (diez si no se indica-n 5)tail -n 8 file1muestra las ocho últimas líneas de un fichero (diez si no se indica-n 8)tail -f /var/log/messagesmuestra en tiempo real cada línea que se añade al ficherotail -f /var/log/messages | grep cadenamuestra cada línea que se añade si contienecadenawc fic1cuenta el número de líneas, palabras y bytes que tiene un archivozcat,zmore,zless,zgrepfuncionan como sus equivalentes pero con archivos de texto comprimidos
Manipulación de texto
cat file1 file2 .. | command <> file1_in.txt_or_file1_out.txtsintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUTcat file1 | command( sed, grep, awk, grep, etc…) > result.txtsintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevocat file1 | command( sed, grep, awk, grep, etc…) >> result.txtsintaxis general para manipular un texto de un fichero y añadir el resultado en un fichero existentegrep Aug /var/log/messagesbusca la cadena “Aug” en el fichero ‘/var/log/messages’grep ^Aug /var/log/messagesbusca palabras que comienzan con “Aug” en el fichero ‘/var/log/messages’grep [0-9] /var/log/messagesselecciona todas las líneas del fichero ‘/var/log/messages’ que contienen númerosgrep Aug -R /var/log/*busca la cadena “Aug” en el árbol del directorio ‘/var/log’sed ‘s/stringa1/stringa2/g’ example.txtreemplaza “string1” por “string2” en ejemplo.txtsed ‘/^$/d’ example.txtelimina todas las líneas en blanco del fichero ejemplo.txtsed ‘/ *#/d; /^$/d’ example.txtelimina comentarios y líneas en blanco del fichero ejemplo.txtecho ‘esempio’ | tr ‘[:lower:]’ ‘[:upper:]’convierte minúsculas en mayúsculassed -e ‘1d’ result.txtelimina la primera línea del fichero ejemplo.txtsed -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 > fic2convierte el ficherofic1asumiendo que usa la «codificación1» de caracteres afic2con «codificacion2»iconv -l | morelista las tablas de codificación de caracteres disponibles
recode ..HTML < page.txt > page.HTMLconvierte un fichero de texto en HTMLrecode -l | moremuestra todas las conversiones de formato disponibles
dos2unix filedos.txt fileunix.txtconvierte el formato de un fichero de texto MSDOS a UNIXunix2dos fileunix.txt filedos.txtconvierte 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 -forcelimpia o borra un cd regrabablemkisofs /dev/cdrom > cd.isocrea una imagen iso de cdrom en discomkisofs /dev/cdrom | gzip > cd_iso.gzcrea una imagen comprimida iso de cdrom en discomkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cdcrea una imagen iso de un directoriocdrecord -v dev=/dev/cdrom cd.isograba una imagen isogzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom –graba una imagen iso comprimidamount -o loop cd.iso /mnt/isomonta una imagen isocd-paranoia -Blleva canciones de un cd a ficheros WAVcd-paranoia – ”-3”lleva las 3 primeras canciones de un cd a ficheros WAVcdrecord –scanbusescanea el bus para identificar el canal scsidd if=/dev/hdc | md5sumaplica un md5sum en un dispositivo, como un CDwho -amuestra, entre otros datos, la hora del último arranque del sistema y su nivel de inicio; procesos activos lanzados porinit, procesos muertos, y quién ha iniciado sesión
Otros comandos útiles
apropos … términomuestra comandos asociados a uno o más términos; útil si se sabe qué hace pero no el nombreman pingmuestra el manual de un comando; usar-kpara encontrar cualquier comando relacionadowhatis comandomuestra un resumen de la función del comandomkbootdisk –device /dev/fd0 `uname -r`crea un floppy boteablegpg -c file1codifica un fichero con cifrado GNU Privacy Guardgpg file1.gpgdecodifica un fichero cifrado con GNU Privacy Guardwget -r www.example.comdescarga los recursos de un dominio web completowget -c www.example.com/file.isodescarga un fichero con la posibilidad de parar y reanudar más adelanteecho ‘wget -c www.example.com/files.iso‘ | at 09:00comienza una descarga a las 9 horasldd /usr/bin/sshmuestra las bibliotecas compartidas requeridas por el programa sshalias hh=’history’crea un alias para que, por ejemplo,–hhsea–historychshcambia el comando de la terminalchsh –list-shellses un comando adecuado para saber si tienes que hacer remoto en otra terminal
Referencias
- Linux common commands de Xah Lee.
- Más de 400 comandos para GNU/Linux que deberías conocer, que a su vez recoge de aquí.
- Unix Toolbox
- 20 Linux command tips and tricks that will save you a lot of time
- How to read and work on gzip compressed log files in Linux
- Using alias command in Linux to improve your efficiency
- Linux mount an LVM volume / partition command y Logical Volume Manager para volúmenes lógicos.
- Sistema de arranque Linux (PDF)
Última revisión: 19/08/2021

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