Comandos Linux
Comandos Linux
Comandos Linux
gratuito cuyas actualizaciones no tienes que pagar como ocurre con Windows o Mac.
Por ello, os facilitamos una excelente lista con más de 300 comandos de Linux para utilizar a
la hora de trabajar con este sistema operativo.
Si necesitas más formación sobre este sistema, consulta este curso de Linux gratis
En esta interesante lista hallarás comandos de Linux sobre: la información del sistema,
archivos y directorios, montando un sistema de ficheros, monitoreando y depurando, trabajo
con la SWAP, actualizador de paquetes APT... entre otros comandos bien interesantes.
Esperamos te resulte muy útil para consultar siempre que te sea necesario:
Encontrar archivos
1.find / -name file1 → buscar fichero y directorio a partir de la raíz del sistema.
2.find / -user user1 → buscar ficheros y directorios pertenecientes al usuario “user1”.
3.find /home/user1 -name \*.bin → buscar ficheros con extensión ”. bin” dentro del
directorio / home/user1.
4.find /usr/bin -type f -atime +100 → buscar ficheros binarios no usados en los últimos
100 días.
5.find /usr/bin -type f -mtime -10 → buscar ficheros creados o cambiados dentro de los
últimos 10 días.
6.find / -name \*.rpm -exec chmod 755 '{}' \; → buscar ficheros con extensión ”.rpm”
y modificar permisos.
7.find . -type f -print0 | xargs -0 chmod 644 → modificar recursivamente los permisos
a todos los ficheros bajo el directorio actual.2)
8.find / -xdev -name \*.rpm → Buscar ficheros con extensión '.rpm' ignorando los
dispositivos removibles como cdrom, pen-drive, etc.…
9.find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80×60
"thumbs/{}" \; → agrupar ficheros redimensionados en el directorio actual y enviarlos
a directorios en vistas de miniaturas (requiere convertir desde Imagemagick).
10.find /tmp/dir1 -depth -regextype posix-extended -regex '.*(\s+|:+|\\+|>+|<+|"+|\*+|\?
+|\|+).*' -execdir rename 's/(\s+|:+|\\+|>+|<+|”+|\*+|\?+|\|+)/_/g' "{}" \; → renombrar
recursivamente todos los directorios y ficheros bajo /tmp/dir1, cambiando los espacios
y otros caracteres extraños por guiones bajos.
11.locate \*.ps → encuentra ficheros con extensión ”.ps” ejecutados primeramente con
el command updatedb.
12.whereis halt → mostrar la ubicación de un fichero binario, de ayuda o fuente. En
este caso pregunta dónde está el comando halt.
13.which comando → mostrar la ruta completa a un comando.
Espacio en disco
1.df -h → mostrar una lista de las particiones montadas.
2.ls -lSr | more → mostrar el tamaño de los ficheros y directorios ordenados por
tamaño.
3.du -sh dir1 → Estimar el espacio usado por el directorio 'dir1'.
4.du -sk * | sort -nr → mostrar en orden descendente el tamaño de los ficheros y
subdirectorios en la ubicación actual, en KiB.
5.du -h --max-depth=1 | sort -nr → mostrar en orden descendente el tamaño de todos
los subdirectorios en la ubicación actual, usando unidades de medida adaptables.
6.du -k --max-depth=1 | sort -k1 -nr | awk '{printf "%.3f GiB\t%s\n", $1/(1048576),
$2}' | less → mostrar en orden descendente el tamaño de los directorios y archivos, en
GiB.
7.rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n → mostrar el espacio usado
por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros).
8.dpkg-query -W -f='${Package}\t${Installed-Size}\n' | sort -k 2 -nr | grep -v deinstall |
head -n 25 | awk '{printf "%.3f MB\t%s\n", $2/(1024), $1}' → mostrar (en Debian o
derivadas) un listado con los 25 paquetes instalados que más espacio consumen (en
orden descendente).
Usuarios y Grupos
1.groupadd nombre_del_grupo → crear un nuevo grupo.
2.groupdel nombre_del_grupo → borrar un grupo.
3.groupmod -n nuevo_nombre_del_grupo viejo_nombre_del_grupo → renombrar un
grupo.
4.adduser usuario1 → Crear un nuevo usuario, mediante un asistente.
5.useradd -c "Nombre Apellido" -g admin -d /home/usuario1 -s /bin/bash usuario1 →
Crear un nuevo usuario perteneciente al grupo “admin”.
6.useradd usuario1 → crear un nuevo usuario.
7.userdel -r usuario1 → borrar un usuario, eliminando su directorio Home.
8.usermod -c "Usuario de FTP" -g system -d /ftp/usuario1 -s /sbin/nologin usuario1 →
cambiar los atributos de un usuario.
9.usermod -aG plugdev,dialout,pip user1 → agregar el usuario user1 a otros grupos
existentes, para incrementar sus permisos (en este caso, agregar la posibilidad de
conectar dispositivos, configurar y utilizar el modem)
10.passwd → cambiar contraseña.
11.passwd usuario1 → cambiar la contraseña de 'usuario1' (solamente ejecutable como
superusuario).
12.chage -E 2011-12-31 user1 → colocar un plazo para la contraseña del usuario. En
este caso dice que la clave expira el 31 de diciembre de 2011.
13.pwck → chequear la sintaxis correcta el formato de fichero de '/etc/passwd' y la
existencia de usuarios.
14.grpck → chequear la sintaxis correcta y el formato del fichero '/etc/group' y la
existencia de grupos.
15.newgrp grupo1 → registra a un nuevo grupo para cambiar el grupo predeterminado
de los ficheros creados recientemente.
Manipulación de texto
1.cat file1 file2 … | command <> file1_in.txt_or_file1_out.txt → sintaxis general para
la manipulación de texto utilizando PIPE, STDIN y STDOUT.
2.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.
3.cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt → sintaxis general
para manipular un texto de un fichero y añadir resultado en un fichero existente.
4.grep Aug /var/log/messages → buscar palabras “Aug” en el fichero
'/var/log/messages'.
5.grep ^Aug /var/log/messages → buscar palabras que comienzan con “Aug” en
fichero '/var/log/messages'
6.grep [0-9] /var/log/messages → seleccionar todas las líneas del fichero
'/var/log/messages' que contienen números.
7.grep Aug -R /var/log/ → buscar la cadena “Aug” en el directorio '/var/log' y debajo.
8.sed 's/string1/string2/g' ejemplo.txt → reemplazar en ejemplo.txt todas las
ocurrencias de “string1” con “string2”
9.sed '/^$/d' ejemplo.txt → eliminar todas las líneas en blanco desde el ejemplo.txt
10.sed '/ *#/d; /^$/d' ejemplo.txt → eliminar comentarios y líneas en blanco de
ejemplo.txt
11.echo 'ejemplo' | tr '[:lower:]' '[:upper:]' → convertir “ejemplo” de minúsculas a
mayúsculas.
12.sed -e '1d' ejemplo.txt → elimina la primera línea del fichero ejemplo.txt
13.sed -n '/string1/p' → visualizar solamente las líneas que contienen la palabra
“string1”.
14.sed -r 's/(cadena1)(cadena2)/\2\1/g' → utilizar expresiones regulares extendidas para
intercambiar el orden de dos cadenas de texto, en todas las instancias que aparezcan.
Salvas
1.dump -0aj -f /tmp/home0.bak /home → hacer una salva completa del directorio
'/home'.
2.dump -1aj -f /tmp/home0.bak /home → hacer una salva incremental del directorio
'/home'.
3.restore -if /tmp/home0.bak → restaurando una salva interactivamente.
4.rsync -rogpav --delete /home /tmp → sincronización entre directorios.
5.rsync -rogpav -e ssh --delete /home ip_address:/tmp → rsync a través del túnel SSH.
6.rsync -az -e ssh --delete ip_addr:/home/public /home/local → sincronizar un
directorio local con un directorio remoto a través de ssh y de compresión.
7.rsync -az -e ssh --delete /home/local ip_addr:/home/public → sincronizar un
directorio remoto con un directorio local a través de ssh y de compresión.
8.dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz' → hacer una salva de
un disco duro en un host remoto a través de ssh.
9.dd if=/dev/sda of=/tmp/file1 → salvar el contenido de un disco duro a un fichero. (En
este caso el disco duro es “sda” y el fichero “file1”).
10.tar -Puf backup.tar /home/user → hacer una salva incremental del directorio
'/home/user'.
11.tar -czv --exclude=/root/dir1/* -f /var/salvas/cfg_$(date +%F_%H%M).tgz /etc /root
→ salvar los directorios /etc y /root (excluyendo el contenido del subdirectorio
/root/dir1/) en un archivo comprimido, cuyo nombre contenga la fecha y hora actual.
12.( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p' →
copiar el contenido de un directorio en un directorio remoto a través de ssh.
13.( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p' → copiar
un directorio local en un directorio remoto a través de ssh.
14.tar cf - . | (cd /tmp/backup ; tar xf - ) → copia local conservando las licencias y
enlaces desde un directorio a otro.
15.find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --
parents → encontrar y copiar todos los ficheros con extensión '.txt' de un directorio a
otro.
16.find ~/ -type f -not -iname '*.mp*' -not \( -iregex '.*\.mozilla/.*' -o -iregex
'.*\.thumbnails/.*' \) -prune -mtime 14 -print0 | xargs -0 tar -czf /var/salvas/myhome.tgz
→ realizar una salva de todos los archivos de nuestro perfil de usuario modificados
dentro de los últimos 14 días, exceptuando los archivos mp3, mpg y similares, y los
directorios .mozilla/ y .thumbnails/.
17.find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2 → encontrar
todos los ficheros con extensión '.log' y hacer un archivo bzip.
18.dd if=/dev/hda of=/dev/fd0 bs=512 count=1 → hacer una copia del MRB (Master
Boot Record) a un disco floppy.
19.dd if=/dev/fd0 of=/dev/hda bs=512 count=1 → restaurar la copia del MBR (Master
Boot Record) salvada en un floppy.
CDROM
1.cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force → limpiar o borrar
un cd regrabable.
2.mkisofs /dev/cdrom > cd.iso → crear una imagen iso de cdrom en disco.
3.mkisofs /dev/cdrom | gzip > cd_iso.gz → crear una imagen comprimida iso de cdrom
en disco.
4.mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd →
crear una imagen iso de un directorio.
5.cdrecord -v dev=/dev/cdrom cd.iso → quemar una imagen iso.
6.gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - → quemar una imagen iso
comprimida.
7.mount -t udf,iso9660 -o loop cd.iso /mnt/iso → montar una imagen iso.
8.cd-paranoia -B → llevar canciones de un cd a ficheros wav.
9.cd-paranoia -- ”-3” → llevar las 3 primeras canciones de un cd a ficheros wav.
10.cdrecord --scanbus → escanear bus para identificar el canal scsi.
11.dd if=/dev/hdc | md5sum → hacer funcionar un md5sum en un dispositivo, como un
CD.
12.eject -v → expulsar un medio o disco extraíble, ofreciendo información adicional.
Cortafuegos (iptables)
1.iptables -t filter -L → mostrar todas las cadenas de la tabla de filtro.
2.iptables -t nat -L → mostrar todas las cadenas de la tabla nat.
3.iptables -t filter -F → limpiar todas las reglas de la tabla de filtro.
4.iptables -t nat -F → limpiar todas las reglas de la tabla nat.
5.iptables -t filter -X → borrar cualquier cadena creada por el usuario.
6.iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT → permitir las
conexiones telnet para entar.
7.iptables -t filter -A OUTPUT -p tcp --dport http -j DROP → bloquear las conexiones
HTTP para salir.
8.iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT → permitir las
conexiones POP a una cadena delantera.
9.iptables -t filter -A INPUT -p tcp -m multiport --dports 80,443,8080 -m state --state
NEW -m limit --limit 4/sec --limit-burst 8 -j ACCEPT → establecer un límite de 4
peticiones por segundo de nuevas conexiones, con posibles ráfagas ocasionales (útil
para políticas de denegación por defecto).
10.iptables -t filter -A INPUT -p tcp -m multiport --dports 80,443,8080 -m state --state
ESTABLISHED,RELATED -m connlimit ! --conlimit-above 6 -j ACCEPT →
establecer un límite de 6 conexiones simultáneas por equipo a nuestro servidor web
(útil para políticas de denegación por defecto).
11.iptables -t filter -A INPUT -j LOG --log-prefix “DROP INPUT” → registrando una
cadena de entrada.
12.iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE → configurar un
PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida
forzada. (Indicado para enlaces tipo ppp)
13.iptables -t nat -A POSTROUTING -s 192.168.0.127 -o eth0 -j SNAT --to-source
169.158.158.169 → enrutar los paquetes desde 192.168.0.127 hacia otras redes por
eth0 y asignarles un dirección ip externa. (Indicado para enlaces tipo ADSL)
14.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 → redireccionar los paquetes diriguidos de un host a otro.
15.iptables -t nat -S → Listar todas las reglas activas en la tabla nat.
16.iptables-save -c > archivo → Salvar las reglas en un archivo (incluyendo los
contadores de paquetes y bytes).
17.iptables-restore -c < archivo → Restaurar las reglas desde un archivo (incluyendo
los contadores de paquetes y bytes).
Monitoreando y Depurando
1.top → mostrar en tiempo real las tareas de linux.
2.htop → mostrar y gestionar las tareas con una interfaz amistosa.
3.ps -eafw → muestra las tareas Linux.
4.ps -e -o pid,args --forest → muestra las tareas Linux en un modo jerárquico.
5.ps -o pid,cmd -ww -C wget → listar todas las instancias del comando wget con sus
argumentos.
6.pstree → mostrar un árbol sistema de procesos.
7.pidof pppd → mostrar el pid del proceso pppd.
8.kill -9 ID_Processo → forzar el cierre de un proceso y terminarlo.
9.kill -1 ID_Processo → forzar un proceso para recargar la configuración.
10.killall Nombre_Proceso → terminar un proceso por el nombre del comando y no
por el ID.
11.kill -HUP $(ps -A -o state,pid --no-header | grep -e '^[Zz]' | awk '{print $2}' | xargs)
→ terminar todos los procesos zombies.
12.lsof -p $$ → mostrar una lista de ficheros abiertos por procesos.
13.lsof /home/user1 → muestra una lista de ficheros abiertos en un camino dado del
sistema.
14.strace -c ls >/dev/null → mostrar las llamadas del sistema hechas y recibidas por un
proceso.
15.strace -f -e open ls >/dev/null → mostrar las llamadas a la biblioteca.
16.watch -n1 'cat /proc/interrupts' → mostrar interrupciones en tiempo real.
17.last reboot → mostrar historial de reinicio.
18.lsmod → mostrar los módulos del kernel cargados.
19.free -m → muestra el estado de la RAM en megabytes.
20.smartctl -A /dev/hda → monitorear la fiabilidad de un disco duro a través de
SMART.
21.smartctl -i /dev/hda → chequear si SMART está activado en un disco duro.
22.tail -f /var/log/dmesg → mostrar eventos inherentes al proceso de carga del kernel.
23.tail -f /var/log/messages → mostrar los eventos del sistema.
24.multitail --follow-all /var/log/{dmesg,messages} → mostrar dos registros de
eventos en una misma pantalla.