|
|
| Línea 1: |
Línea 1: |
| = Algunos comandos de GNU/Linux = | | {|class="wikitable right" border="4" width="20%" cellpadding="3" cellspacing="3" bordercolor="#CD950C" align="right" |
|
| | |----- |
| == Información del sistema == | | |rowspan="1" colspan="4" bgcolor="#FF8C69" align="center"|'''División de la [[Historia]] Europea según [[Cristóbal Cellarius]]''' |
|
| | |----- |
| # <code>arch</code> → mostrar la arquitectura de la máquina (1).
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CDCDB4" align="center"|<small>[[Prehistoria]] |
| # <code>uname -m</code> → mostrar la arquitectura de la máquina (2). | | |----- |
| # <code>uname -r</code> → mostrar la versión del kernel usado.
| | |rowspan="2" colspan="1" style="font-size: 125%;" bgcolor="#FFEC8B" align="center"|<small>'''[[Edad Antigua]]''' |
| # <code>uname -a</code> → mostrar la información completa.
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CAFF70" align="center"|<small>[[Antigüedad clásica]] |
| # <code>lsb_release -a</code> → mostrar la información completa de la distribución.
| | |----- |
| # <code>cat /etc/issue</code> → mostrar el nombre de la distribución
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CDC673" align="center"|<small>[[Antigüedad tardía]] |
| # <code>dmidecode -q</code> → mostrar los componentes (hardware) del sistema. | | |----- |
| # <code>hdparm -i /dev/hda</code> → mostrar las características de un disco duro. | | |rowspan="3" colspan="1" style="font-size: 125%;" bgcolor="#FFE7BA" align="center"|<small>'''[[Edad Media]]''' |
| # <code>hdparm -tT /dev/sda</code> → realizar prueba de lectura en un disco duro.
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CAFF70" align="center"|<small>[[Alta Edad Media]] |
| # <code>cat /proc/cpuinfo</code> → mostrar información de la CPU.
| | |----- |
| # <code>grep -c ^processor /proc/cpuinfo</code> → mostrar número de procesadores.
| | |rowspan="2" colspan="2" style="font-size: 125%;" bgcolor="#FFEC8B" align="center"|<small>[[Baja Edad Media]] |
| # <code>cat /proc/interrupts</code> → mostrar las interrupciones. | | |rowspan="1" colspan="1" style="font-size: 125%;" bgcolor="#FFE7BA" align="right"|<small>[[Plena Edad Media]] |
| # <code>cat /proc/meminfo</code> → verificar el uso de memoria. | | |----- |
| # <code>cat /proc/swaps</code> → mostrar ficheros swap.
| | |rowspan="1" colspan="1" style="font-size: 125%;" bgcolor="#CDC673" align="right"|<small>[[Crisis de la Edad Media]] |
| # <code>cat /proc/version</code> → mostrar la versión del kernel.
| | |----- |
| # <code>cat /proc/net/dev</code> → mostrar adaptadores de red y estadísticas. | | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CDCDB4" align="center"|<small>[[siglo XV]] |
| # <code>cat /proc/mounts</code> → mostrar el sistema de ficheros montado.
| | |----- |
| # <code>lscpu</code> → mostrar información sobre el microprocesador. | | |rowspan="2" colspan="1" style="font-size: 125%;" bgcolor="#FFEC8B" align="center"|<small>'''[[Edad Moderna]]''' |
| # <code>lspci -tv</code> → mostrar los dispositivos PCI.
| | </font color="#473C8B"> |
| # <code>lsusb -tv</code> → mostrar los dispositivos USB. | | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CAFF70" align="center"|<small>[[siglo XVI]] |
| # <code>lshw</code> → listar el hardware.
| | |----- |
| # <code>discover</code> → listar el hardware.
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CDC673" align="center"|<small>[[siglo XVII]] |
| # <code>date</code> → mostrar la fecha del sistema.
| | |----- |
| # <code>cal 2011</code> → mostrar el almanaque de 2011. | | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CDCDB4" align="center"|<small>[[siglo XVIII]] |
| # <code>cal 07 2011</code> → mostrar el almanaque para el mes julio de 2011.
| | |----- |
| # <code>date 041217002011.00</code> → colocar (declarar, ajustar) fecha y hora. | | |rowspan="3" colspan="1" style="font-size: 125%;" bgcolor="#FFE7BA" align="center"|<small>'''{{tc|Edad Contemporánea|color=#473C8B}}''' |
| # <code>clock -w</code> → guardar los cambios de fecha en la BIOS.
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CAFF70" align="center"|<small>[[siglo XIX]] |
| # <code>blkid</code> → mostrar información (nombre, etiqueta, UUID, tipo de partición) sobre los dispositivos de bloque (discos rígidos, etc.) | | |----- |
|
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CDC673" align="center"|<small>[[siglo XX]] |
| == Apagar, reiniciar o cerrar sesión == | | |----- |
|
| | |rowspan="1" colspan="4" style="font-size: 125%;" bgcolor="#CDCDB4" align="center"|<small>[[siglo XXI]] |
| # <code>shutdown -h now</code> → apagar el sistema (1). | | |} |
| # <code>init 0</code> → apagar el sistema (2).
| |
| # <code>telinit 0</code> → apagar el sistema (3). | |
| # <code>halt</code> → apagar el sistema (4).
| |
| # <code>poweroff</code> → apagar sistema (5).
| |
| # <code>shutdown -h hours:minutes &</code> → apagado planificado del sistema.
| |
| # <code>shutdown -c</code> → cancelar un apagado planificado del sistema.
| |
| # <code>shutdown -r now</code> → reiniciar (1).
| |
| # <code>reboot</code> → reiniciar (2).
| |
| # <code>logout</code> → cerrar sesión. | |
| # <code>skill nombre_de_usuario</code> → cerrar sesión (2)<sup>[[1)]]</sup> | |
| # <code>exit</code> → salir del intérprete de comandos (si solo hay uno, equivale a cerrar sesión).
| |
|
| |
| == Gestionar archivos y directorios == | |
|
| |
| # <code>cd</code> → ir al directorio personal. | |
| # <code>cd /home</code> → cambiar al directorio “/home”.
| |
| # <code>cd ..</code> → retroceder un nivel. | |
| # <code>cd ../..</code> → retroceder 2 niveles.
| |
| # <code>cd ~user1</code> → ir al directorio user1.
| |
| # <code>cd -</code> → ir (regresar) al directorio anterior.
| |
| # <code>pwd</code> → mostrar el camino del directorio actual.
| |
| # <code>ls</code> → listar el contenido de un directorio.
| |
| # <code>ls -F</code> → listar el contenido de un directorio (distinguiendo los directorios con una barra)
| |
| # <code>ls -l</code> → listar el contenido de un directorio, mostrando los detalles.
| |
| # <code>ls -lh</code> → listar el contenido de un directorio, mostrando los detalles (y el tamaño en un formato “humanizado”).
| |
| # <code>ls -a</code> → listar el contenido de un directorio, incluendo los ficheros ocultos.
| |
| # <code>ls *[0-9]</code> → listar los ficheros y carpetas que contienen números.
| |
| # <code>ls -laR | less </code> → listar recursivamente el contenido del directorio actual y todos los subdirectorios y archivos, incluyendo los ocultos, separados por página.
| |
| # <code>tree</code> → mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(1)
| |
| # <code>lstree</code> → mostrar los ficheros y carpetas en forma de árbol comenzando por la raíz.(2)
| |
| # <code>mkdir dir1</code> → crear un directorio de nombre 'dir1'.
| |
| # <code>mkdir dir1 dir2</code> → crear dos directorios a la vez (en la ubicación actual).
| |
| # <code>mkdir -p /tmp/dir1/dir2</code> → crear una estructura de directorios, si no existe.
| |
| # <code>rm file1</code> → eliminar el archivo 'file1'.
| |
| # <code>rm -f file1</code> → eliminar el archivo 'file1' en modo forzado.
| |
| # <code>rmdir dir1</code> → borrar el directorio 'dir1'.
| |
| # <code>rm -rf dir1</code> → eliminar recursivamente y en modo forzado el directorio 'dir1' con todo lo que contenga.
| |
| # <code>rm -rf dir1 dir2</code> → borrar dos directorios con su contenido de forma recursiva.
| |
| # <code>mv dir1 new_dir</code> → renombrar o mover un fichero o carpeta (directorio).
| |
| # <code>cp file1 destino/</code> → copiar un fichero al destino elegido.
| |
| # <code>cp file1 file2 destino/</code> → copiar a la vez dos ficheros a un mismo directorio.
| |
| # <code>cp file1 file2</code> → copiar file1 en file2.
| |
| # <code>cp dir /* .</code> → copiar todos los ficheros de un directorio dentro del directorio de trabajo actual.
| |
| # <code>cp -a /tmp/dir1 .</code> → copiar un directorio dentro del directorio actual de trabajo.
| |
| # <code>cp -a dir1</code> → copiar un directorio.
| |
| # <code>cp -a dir1 dir2</code> → copiar dos directorio al unísono.
| |
| # <code>ln -s file1 lnk1</code> → crear un enlace simbólico al fichero o directorio.
| |
| # <code>ln file1 lnk1</code> → crear un enlace físico al fichero o directorio.
| |
| # <code>touch file1</code> → actualizar la fecha de modificación de file1, o crearlo si no existe.
| |
| # <code>touch -t 0712250000 file1</code> → modificar el tiempo real (tiempo de creación) de un fichero o directorio.
| |
| # <code>file file1</code> → salida (volcado en pantalla) del tipo mime de un fichero texto.
| |
| # <code>iconv -l</code> → listas de cifrados conocidos.
| |
| # <code>iconv -f fromEncoding -t toEncoding inputFile > outputFile</code> → crea una nueva forma del fichero de entrada asumiendo que está codificado en fromEncoding y convirtiéndolo a ToEncoding.
| |
|
| |
| == Encontrar archivos ==
| |
|
| |
| # <code>find / -name file1</code> → buscar fichero y directorio a partir de la raíz del sistema.
| |
| # <code>find / -user user1</code> → buscar ficheros y directorios pertenecientes al usuario “user1”.
| |
| # <code>find /home/user1 -name \*.bin</code> → buscar ficheros con extensión ”. bin” dentro del directorio <code>/ home/user1</code>.
| |
| # <code>find /usr/bin -type f -atime +100</code> → buscar ficheros binarios no usados en los últimos 100 días.
| |
| # <code>find /usr/bin -type f -mtime -10</code> → buscar ficheros creados o cambiados dentro de los últimos 10 días.
| |
| # <code>find / -name \*.rpm -exec chmod 755 '{}' \;</code> → buscar ficheros con extensión ”.rpm” y modificar permisos.
| |
| # <code>find . -type f -exec grep -nH –color=auto ‘echo’ {} \;</code> → Buscando la palabra “echo” en todos los archivos y directorios de la ruta local, muestra el nombre del archivo y su ruta donde encontró la palabra, muestra el numero de linea donde esta la palabra y coloca en color rojo la palabra buscada.
| |
| # <code>find . -type f -print0 | xargs -0 chmod 644</code> → modificar recursivamente los permisos a todos los ficheros bajo el directorio actual.
| |
| # <code>find / -xdev -name \*.rpm</code> → Buscar ficheros con extensión '.rpm' ignorando los dispositivos removibles como cdrom, pen-drive, etc.…
| |
| # <code>find . -maxdepth 1 -name *.jpg -print -exec convert "{}" -resize 80×60 "thumbs/{}" \;</code> → agrupar ficheros redimensionados en el directorio actual y enviarlos a directorios en vistas de miniaturas (requiere convertir desde Imagemagick).
| |
| # <code>find /tmp/dir1 -depth -regextype posix-extended -regex '.*(\s+|:+|\\+|>+|<+|"+|\*+|\?+|\|+).*' -execdir rename 's/(\s+|:+|\\+|>+|<+|”+|\*+|\?+|\|+)/_/g' "{}" \;</code> → renombrar recursivamente todos los directorios y ficheros bajo <code>/tmp/dir1</code>, cambiando los espacios y otros caracteres extraños por guiones bajos.
| |
| # <code>locate \*.ps</code> → encuentra ficheros con extensión ”.ps” ejecutados primeramente con el command <code>updatedb</code>.
| |
| # <code>whereis halt</code> → mostrar la ubicación de un fichero binario, de ayuda o fuente. En este caso pregunta dónde está el comando <code>halt</code>.
| |
| # <code>which comando</code> → mostrar la ruta completa a un comando.
| |
| | |
| == Montando un sistema de ficheros ==
| |
|
| |
| # <code>mount /dev/hda2 /mnt/hda2</code> → montar un disco llamado hda2. Verifique primero la existencia del directorio '/ mnt/hda2'; si no está, debe crearlo.
| |
| # <code>umount /dev/hda2</code> → desmontar un disco llamado hda2. (Antes es necesario salir del punto '/mnt/hda2'.
| |
| # <code>fuser -km /mnt/hda2</code> → forzar el desmontaje cuando el dispositivo está ocupado.
| |
| # <code>umount -n /mnt/hda2</code> → correr el desmontaje sin leer el fichero /etc/mtab. Útil cuando el fichero es de solo lectura o el disco duro está lleno.
| |
| # <code>mount /dev/fd0 /mnt/floppy</code> → montar un disco flexible (floppy).
| |
| # <code>mount /dev/cdrom /mnt/cdrom</code> → montar un cdrom / dvdrom.
| |
| # <code>mount /dev/hdc /mnt/cdrecorder</code> → montar un cd regrabable o un dvdrom.
| |
| # <code>mount /dev/hdb /mnt/cdrecorder</code> → montar un cd regrabable / dvdrom (un dvd).
| |
| # <code>mount -t udf,iso9660 -o loop file.iso /mnt/cdrom</code> → montar un fichero de imagen de un medio óptico (como un CD o DVD en formato ISO).
| |
| # <code>mount -t vfat /dev/hda5 /mnt/hda5</code> → montar un sistema de ficheros FAT32.
| |
| # <code>mount -t ntfs-3g /dev/hda5 /mnt/hda5</code> → montar un sistema de ficheros NTFS.
| |
| # <code>mount /dev/sda1 /mnt/usbdisk</code> → montar un usb pen-drive o una memoria (sin especificar el tipo de sistema de ficheros).
| |
|
| |
| == Espacio en disco ==
| |
|
| |
| # <code>df -h</code> → mostrar una lista de las particiones montadas.
| |
| # <code>ls -lSr | more</code> → mostrar el tamaño de los ficheros y directorios ordenados por tamaño.
| |
| # <code>du -sh dir1</code> → Estimar el espacio usado por el directorio 'dir1'.
| |
| # <code>du -sk * | sort -nr</code> → mostrar en orden descendente el tamaño de los ficheros y subdirectorios en la ubicación actual, en KiB.
| |
| # <code>du -h --max-depth=1 | sort -nr</code> → mostrar en orden descendente el tamaño de todos los subdirectorios en la ubicación actual, usando unidades de medida adaptables.
| |
| # <code>du -k --max-depth=1 | sort -k1 -nr | awk '{printf "%.3f GiB\t%s\n", $1/(1048576), $2}' | less</code> → mostrar en orden descendente el tamaño de los directorios y archivos, en GiB.
| |
| # <code>rpm -q -a --qf '%10{SIZE}t%{NAME}n' | sort -k1,1n</code> → mostrar el espacio usado por los paquetes rpm instalados organizados por tamaño (Fedora, Redhat y otros).
| |
| # <code>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}</code>' → mostrar (en Debian o derivadas) un listado con los 25 paquetes instalados que más espacio consumen (en orden descendente).
| |
|
| |
| == Usuarios y grupos ==
| |
|
| |
| # <code>groupadd nombre_del_grupo</code> → crear un nuevo grupo.
| |
| # <code>groupdel nombre_del_grupo</code> → borrar un grupo.
| |
| # <code>groupmod -n nuevo_nombre_del_grupo viejo_nombre_del_grupo</code> → renombrar un grupo.
| |
| # <code>adduser usuario1</code> → Crear un nuevo usuario, mediante un asistente.
| |
| # <code>useradd -c "Nombre Apellido" -g admin -d /home/usuario1 -s /bin/bash usuario1</code> → Crear un nuevo usuario perteneciente al grupo “admin”.
| |
| # <code>useradd usuario1</code> → crear un nuevo usuario.
| |
| # <code>userdel -r usuario1</code> → borrar un usuario, eliminando su directorio Home.
| |
| # <code>usermod -c "Usuario de FTP" -g system -d /ftp/usuario1 -s /sbin/nologin usuario1</code> → cambiar los atributos de un usuario.
| |
| # <code>usermod -aG plugdev,dialout,pip user1</code> → 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)
| |
| # <code>passwd</code> → cambiar contraseña.
| |
| # <code>passwd usuario1</code> → cambiar la contraseña de 'usuario1' (solamente ejecutable como superusuario).
| |
| # <code>chage -E 2011-12-31 user1</code> → colocar un plazo para la contraseña del usuario. En este caso dice que la clave expira el 31 de diciembre de 2011.
| |
| # <code>pwck</code> → chequear la sintaxis correcta el formato de fichero de '/etc/passwd' y la existencia de usuarios.
| |
| # <code>grpck</code> → chequear la sintaxis correcta y el formato del fichero '/etc/group' y la existencia de grupos.
| |
| # <code>newgrp grupo1</code> → registra a un nuevo grupo para cambiar el grupo predeterminado de los ficheros creados recientemente.
| |
|
| |
| == Permisos en ficheros (usar "+" para colocar permisos y "-" para eliminar) ==
| |
|
| |
| # <code>ls -lh</code> → Mostrar permisos.
| |
| # <code>ls /tmp | pr -T5 -W$COLUMNS</code> → dividir la terminal en 5 columnas.
| |
| # <code>chmod ugo+rwx directory1</code> → colocar permisos de lectura ®, escritura (w) y ejecución(x) al propietario (u), al grupo (g) y a otros (o) sobre el directorio 'directory1'.
| |
| # <code>chmod go-rwx directory1</code> → quitar permiso de lectura ®, escritura (w) y (x) ejecución al grupo (g) y otros (o) sobre el directorio 'directory1'.
| |
| # <code>chown user1 file1</code> → cambiar el dueño de un fichero.
| |
| # <code>chown -R user1 directory1</code> → cambiar el propietario de un directorio y de todos los ficheros y directorios contenidos dentro.
| |
| # <code>chgrp group1 file1</code> → cambiar grupo de ficheros.
| |
| # <code>chown user1:group1 file1</code> → cambiar usuario y el grupo propietario de un fichero.
| |
| # <code>find / -perm -u+s</code> → visualizar todos los ficheros del sistema con SUID configurado.
| |
| # <code>chmod u+s /bin/file1</code> → colocar el bit SUID en un fichero binario. El usuario que corriendo ese fichero adquiere los mismos privilegios como dueño.
| |
| # <code>chmod u-s /bin/file1</code> → deshabilitar el bit SUID en un fichero binario.
| |
| # <code>chmod g+s /home/public</code> → colocar un bit SGID en un directorio –similar al SUID pero por directorio.
| |
| # <code>chmod g-s /home/public</code> → desabilitar un bit SGID en un directorio.
| |
| # <code>chmod o+t /home/public</code> → colocar un bit STIKY en un directorio. Permite el borrado de ficheros solamente a los dueños legítimos.
| |
| # <code>chmod o-t /home/public</code> → desabilitar un bit STIKY en un directorio.
| |
|
| |
| == Atributos especiales en ficheros (usar "+" para colocar permisos y "-" para eliminar) ==
| |
|
| |
| # <code>chattr +a file1</code> → permite escribir abriendo un fichero solamente modo append.
| |
| # <code>chattr +c file1</code> → permite que un fichero sea comprimido / descomprimido automaticamente.
| |
| # <code>chattr +d file1</code> → asegura que el programa ignore borrar los ficheros durante la copia de seguridad.
| |
| # <code>chattr +i file1</code> → convierte el fichero en inmutable o invariable, por lo que no puede ser eliminado, alterado, renombrado, ni enlazado.
| |
| # <code>chattr +s file1</code> → permite que un fichero sea borrado de forma segura.
| |
| # <code>chattr +S file1</code> → asegura que un fichero sea modificado, los cambios son escritos en modo synchronous como con sync.
| |
| # <code>chattr +u file1</code> → te permite recuperar el contenido de un fichero aún si este está cancelado.
| |
| # <code>lsattr</code> → mostrar atributos especiales.
| |
|
| |
| == Archivos y ficheros comprimidos ==
| |
|
| |
| # <code>7za a -mx=9 -ms=on -mhe=on -p archivocomprimido directorio1 archivo1 archivo2</code> → comprimir un directorio y dos archivos en formato 7zip, con compresión sólida máxima, y protección por contraseña (la extensión 7z se agrega automáticamente).
| |
| # <code>7za x archivocomprimido.7z</code> → extraer un archivo comprimido en 7zip (7zip también permite descomprimir otros formatos, como por ejemplo, zip).
| |
| # <code>bunzip2 file1.bz2</code> → descomprime in fichero llamado 'file1.bz2'.
| |
| # <code>bzip2 file1</code> → comprime un fichero llamado 'file1'.
| |
| # <code>gunzip file1.gz</code> → descomprime un fichero llamado 'file1.gz'.
| |
| # <code>gzip file1</code> → comprime un fichero llamado 'file1'.
| |
| # <code>gzip -9 file1</code> → comprime con compresión máxima.
| |
| # <code>rar a file1.rar test_file</code> → crear un fichero rar llamado 'file1.rar'.
| |
| # <code>rar a file1.rar file1 file2 dir1</code> → comprimir 'file1', 'file2' y 'dir1' simultáneamente.
| |
| # <code>rar x file1.rar</code> → descomprimir archivo rar.
| |
| # <code>unrar x file1.rar</code> → descomprimir archivo rar.
| |
| # <code>tar -cvf archive.tar file1</code> → crear un tarball descomprimido.
| |
| # <code>tar -cvf archive.tar file1 file2 dir1</code> → crear un archivo conteniendo 'file1', 'file2' y'dir1'.
| |
| # <code>tar -tf archive.tar</code> → mostrar los contenidos de un archivo.
| |
| # <code>tar -xvf archive.tar</code> → extraer un tarball (si el archivo además está comprimido con gzip, bzip2 o xz, descomprimirlo automáticamente).
| |
| # <code>tar -xvf archive.tar -C /tmp</code> → extraer un tarball en /tmp.
| |
| # <code>tar -cjvf archive.tar.bz2 dir1</code> → crear un tarball comprimido en bzip2.
| |
| # <code>tar -xjvf archive.tar.bz2</code> → descomprimir un archivo tar comprimido en bzip2
| |
| # <code>tar -cJvf archive.tar.xz dir1</code> → crear un tarball comprimido en xz.
| |
| # <code>XZ_OPT=-9e tar -cJvf archive.tar.xz dir1</code> → crear un tarball comprimido en xz (con máxima compresión).
| |
| # <code>tar -xJvf archive.tar.xz</code> → descomprimir un archivo tar comprimido en xz.
| |
| # <code>tar -czvf archive.tar.gz dir1</code> → crear un tarball comprimido en gzip.
| |
| # <code>tar -I pigz -cf archive.tar.gz dir1</code> → crear un tarball comprimido en gzip, pero utilizando <code>pigz</code>, que comprime en paralelo aprovechando todos los núcleos de los microprocesadores del equipo.
| |
| # <code>GZIP=-9 tar -czvf archive.tar.gz dir1</code> → crear un tarball comprimido en gzip (con máxima compresión).
| |
| # <code>tar -xzvf archive.tar.gz</code> → descomprimir un archive tar comprimido en gzip.
| |
| # <code>zip file1.zip file1</code> → crear un archivo comprimido en zip.
| |
| # <code>zip -r file1.zip file1 file2 dir1</code> → comprimir, en zip, varios archivos y directorios de forma simultánea.
| |
| # <code>unzip file1.zip</code> → descomprimir un archivo zip.
| |
|
| |
| == Paquetes rpm (Red Hat, Fedora y similares) ==
| |
|
| |
| # <code>rpm -ivh package.rpm</code> → instalar un paquete rpm.
| |
| # <code>rpm -ivh --nodeeps package.rpm</code> → instalar un paquete rpm ignorando las peticiones de dependencias.
| |
| # <code>rpm -U package.rpm</code> → actualizar un paquete rpm sin cambiar la configuración de los ficheros.
| |
| # <code>rpm -F package.rpm</code> → actualizar un paquete rpm solamente si este está instalado.
| |
| # <code>rpm -e package_name.rpm</code> → eliminar un paquete rpm.
| |
| # <code>rpm -qa</code> → mostrar todos los paquetes rpm instalados en el sistema.
| |
| # <code>rpm -qa | grep httpd</code> → mostrar todos los paquetes rpm con el nombre “httpd”.
| |
| # <code>rpm -qi package_name</code> → obtener información en un paquete específico instalado.
| |
| # <code>rpm -qg "System Environment/Daemons"</code> → mostar los paquetes rpm de un grupo software.
| |
| # <code>rpm -ql package_name</code> → mostrar lista de ficheros dados por un paquete rpm instalado.
| |
| # <code>rpm -qc package_name</code> → mostrar lista de configuración de ficheros dados por un paquete rpm instalado.
| |
| # <code>rpm -q package_name --whatrequires</code> → mostrar lista de dependencias solicitada para un paquete rpm.
| |
| # <code>rpm -q package_name --whatprovides</code> → mostar la capacidad dada por un paquete rpm.
| |
| # <code>rpm -q package_name --scripts</code> → mostrar los scripts comenzados durante la instalación /eliminación.
| |
| # <code>rpm -q package_name --changelog</code> → mostar el historial de revisions de un paquete rpm.
| |
| # <code>rpm -qf /etc/httpd/conf/httpd.conf</code> → verificar cuál paquete rpm pertenece a un fichero dado.
| |
| # <code>rpm -qp package.rpm -l</code> → mostrar lista de ficheros dados por un paquete rpm que aún no ha sido instalado.
| |
| # <code>rpm --import /media/cdrom/RPM-GPG-KEY</code> → importar la firma digital de la llave pública.
| |
| # <code>rpm --checksig package.rpm</code> → verificar la integridad de un paquete rpm.
| |
| # <code>rpm -qa gpg-pubkey</code> → verificar la integridad de todos los paquetes rpm instalados.
| |
| # <code>rpm -V package_name</code> → chequear el tamaño del fichero, licencias, tipos, dueño, grupo, chequeo de resumen de MD5 y última modificación.
| |
| # <code>rpm -Va</code> → chequear todos los paquetes rpm instalados en el sistema. Usar con cuidado.
| |
| # <code>rpm -Vp package.rpm</code> → verificar un paquete rpm no instalado todavía.
| |
| # <code>rpm2cpio package.rpm | cpio --extract --make-directories *bin</code> → extraer fichero ejecutable desde un paquete rpm.
| |
| # <code>rpm -ivh /usr/src/redhat/RPMS/`arch`/package.rpm</code> → instalar un paquete construido desde una fuente rpm.
| |
| # <code>rpmbuild --rebuild package_name.src.rpm</code> → construir un paquete rpm desde una fuente rpm.
| |
|
| |
| == Actualizador de paquetes yum (Fedora, Redhat y otros) ==
| |
|
| |
| # <code>yum install package_name</code> → descargar e instalar un paquete rpm.
| |
| # <code>yum localinstall package_name.rpm</code> → este instalará un RPM y tratará de resolver todas las dependencies para ti, usando tus repositorios.
| |
| # <code>yum update</code> → actualizar todos los paquetes rpm instalados en el sistema.
| |
| # <code>yum update package_name</code> → modernizar / actualizar un paquete rpm.
| |
| # <code>yum remove package_name</code> → eliminar un paquete rpm.
| |
| # <code>yum list</code> → listar todos los paquetes instalados en el sistema.
| |
| # <code>yum search package_name</code> → Encontrar un paquete en repositorio rpm.
| |
| # <code>yum clean packages</code> → limpiar un caché rpm borrando los paquetes descargados.
| |
| # <code>yum clean headers</code> → eliminar todos los ficheros de encabezamiento que el sistema usa para resolver la dependencia.
| |
| # <code>yum clean all</code> → eliminar desde los paquetes caché y ficheros de encabezado.
| |
|
| |
| == Gestión de paquetes deb (Debian, Ubuntu y otros) ==
| |
|
| |
| # <code>dpkg -i elpaquete.deb</code> → instalar / actualizar un paquete.
| |
| # <code>dpkg -r elpaquete</code> → eliminar un paquete deb del sistema.
| |
| # <code>dpkg -l</code> → mostrar todos los paquetes deb instalados en el sistema.
| |
| # <code>dpkg -l | grep httpd</code> → mostrar todos los paquetes deb con el nombre “httpd”
| |
| # <code>dpkg -s elpaquete</code> → obtener información en un paquete específico instalado en el sistema.
| |
| # <code>dpkg -L elpaquete</code> → mostar lista de ficheros utilizados por un paquete instalado en el sistema.
| |
| # <code>dpkg -c elpaquete.deb</code> → mostrar contenido de un paquete (no necesariamente instalado).
| |
| # <code>dpkg -S /bin/ping</code> → verificar a qué paquete pertenece un fichero dado.
| |
|
| |
| == Actualizador de paquetes apt y aptitude (Debian, Ubuntu y otros) ==
| |
|
| |
| # <code>apt-get install package_name</code> → instalar / actualizar un paquete deb.
| |
| # <code>apt-cdrom install package_name</code> → instalar / actualizar un paquete deb desde un cdrom.
| |
| # <code>apt-get update</code> → actualizar la lista de paquetes.
| |
| # <code>apt-get upgrade</code> → actualizar todos los paquetes instalados.
| |
| # <code>apt-get remove package_name</code> → eliminar un paquete deb del sistema.
| |
| # <code>apt-get check</code> → verificar la correcta resolución de las dependencias.
| |
| # <code>apt-get clean</code> → limpiar cache desde los paquetes descargados.
| |
| # <code>apt-cache search searched-package</code> → retorna lista de paquetes que corresponde a la serie «paquetes buscados».
| |
| # <code>aptitude search paquete</code> → busca un paquete por el nombre.
| |
| # <code>aptitude search ~dpaquete</code> → busca un paquete por la descripción.
| |
| # <code>aptitude show paquete | less</code> → muestra información sobre un paquete.
| |
| # <code>aptitude install paquete1 paquete2 …</code> → instala varios paquetes con sus dependencias y recomendaciones.
| |
| # <code>aptitude -R install paquete</code> → instala un paquete con sus dependencias, pero sin las recomendaciones.
| |
| # <code>aptitude why paquete</code> → lista las razones por las que se debería instalar el paquete.
| |
| # <code>aptitude why-not paquete</code> → lista las razones por las que no se puede instalar el paquete.
| |
| # <code>aptitude -rsvW install paquete</code> → simula la instalación de un paquete con sus dependencias y recomendaciones, detallando cada una.
| |
| # <code>aptitude remove paquete</code> → desinstala un paquete.
| |
| # <code>aptitude purge paquete</code> → desinstala un paquete y lo limpia de la cache.
| |
| # <code>aptitude clean</code> → limpia la cache de paquetes.
| |
| # <code>apt-file -xi search 'sql</code>' → busca todos los paquetes que contengan un archivo o directorio con la expresión ''sql'' (sin considerar mayúsculas o minúsculas).<sup>[[3)]]</sup>
| |
|
| |
| == Ver el contenido de un fichero ==
| |
|
| |
| # <code>cat file1</code> → ver los contenidos de un fichero comenzando desde la primera línea.
| |
| # <code>tac file1</code> → ver los contenidos de un fichero comenzando desde la última línea.
| |
| # <code>more file1</code> → ver el contenido de un fichero de manera paginada.
| |
| # <code>less file1</code> → parecido al commando 'more' pero permite avanzar, retroceder, y buscar (compatible con algunos comandos de <code>vi</code>).
| |
| # <code>head -2 file1</code> → ver las dos primeras líneas de un fichero (ó 10, si no se especifica la cantidad de líneas).
| |
| # <code>tail -2 file1</code> → ver las dos últimas líneas de un fichero (ó 10, si no se especifica la cantidad de líneas).
| |
|
| |
| == Manipulación de texto ==
| |
|
| |
| # <code>cat file1 file2 … | command <> file1_in.txt_or_file1_out.txt</code> → sintaxis general para la manipulación de texto utilizando PIPE, STDIN y STDOUT.
| |
| # <code>cat file1 | command( sed, grep, awk, grep, etc…) > result.txt</code> → sintaxis general para manipular un texto de un fichero y escribir el resultado en un fichero nuevo.
| |
| # <code>cat file1 | command( sed, grep, awk, grep, etc…) >> result.txt</code> → sintaxis general para manipular un texto de un fichero y añadir resultado en un fichero existente.
| |
| # <code>grep Aug /var/log/messages</code> → buscar palabras “Aug” en el fichero '/var/log/messages'.
| |
| # <code>grep ^Aug /var/log/messages</code> → buscar palabras que comienzan con “Aug” en fichero '/var/log/messages'
| |
| # <code>grep [0-9] /var/log/messages</code> → seleccionar todas las líneas del fichero '/var/log/messages' que contienen números.
| |
| # <code>grep Aug -R /var/log/</code> → buscar la cadena “Aug” en el directorio '/var/log' y debajo.
| |
| # <code>sed 's/string1/string2/g' ejemplo.txt</code> → reemplazar en ejemplo.txt todas las ocurrencias de “string1” con “string2”
| |
| # <code>sed '/^$/d' ejemplo.txt</code> → eliminar todas las líneas en blanco desde el ejemplo.txt
| |
| # <code>sed '/ *#/d; /^$/d' ejemplo.txt</code> → eliminar comentarios y líneas en blanco de ejemplo.txt
| |
| # <code>echo 'ejemplo' | tr '[:lower:]' '[:upper:]</code>' → convertir “ejemplo” de minúsculas a mayúsculas.
| |
| # <code>sed -e '1d' ejemplo.txt</code> → elimina la primera línea del fichero ejemplo.txt
| |
| # <code>sed -n '/string1/p</code>' → visualizar solamente las líneas que contienen la palabra “string1”.
| |
| # <code>sed -r 's/(cadena1)(cadena2)/\2\1/g</code>' → utilizar expresiones regulares extendidas para intercambiar el orden de dos cadenas de texto, en todas las instancias que aparezcan.
| |
|
| |
| == Establecer caracter y conversión de ficheros ==
| |
|
| |
| # <code>dos2unix filedos.txt fileunix.txt</code> → convertir un formato de fichero texto desde MSDOS a UNIX.
| |
| # <code>unix2dos fileunix.txt filedos.txt</code> → convertir un formato de fichero de texto desde UNIX a MSDOS.
| |
| # <code>recode ..HTML < page.txt > page.html</code> → convertir un fichero de texto en html.
| |
| # <code>recode -l | more</code> → mostrar todas las conversiones de formato disponibles.
| |
|
| |
| == Análisis del sistema de ficheros ==
| |
|
| |
| # <code>badblocks -v /dev/hda1</code> → Chequear los bloques defectuosos en el disco hda1.
| |
| # <code>fsck /dev/hda1</code> → reparar / chequear la integridad del fichero del sistema Linux en el disco hda1.
| |
| # <code>fsck.ext2 /dev/hda1</code> → reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
| |
| # <code>e2fsck /dev/hda1</code> → reparar / chequear la integridad del fichero del sistema ext 2 en el disco hda1.
| |
| # <code>e2fsck -j /dev/hda1</code> → reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
| |
| # <code>fsck.ext3 /dev/hda1</code> → reparar / chequear la integridad del fichero del sistema ext 3 en el disco hda1.
| |
| # <code>fsck.vfat /dev/hda1</code> → reparar / chequear la integridad del fichero sistema fat en el disco hda1.
| |
| # <code>fsck.msdos /dev/hda1</code> → reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
| |
| # <code>dosfsck /dev/hda1</code> → reparar / chequear la integridad de un fichero del sistema dos en el disco hda1.
| |
|
| |
| == Formatear un sistema de ficheros ==
| |
|
| |
| # <code>mkfs /dev/hda1</code> → crear un fichero de sistema tipo Linux en la partición hda1.
| |
| # <code>mke2fs /dev/hda1</code> → crear un fichero de sistema tipo Linux ext 2 en hda1.
| |
| # <code>mke2fs -j /dev/hda1</code> → crear un fichero de sistema tipo Linux ext3 (periódico) en la partición hda1.
| |
| # <code>mkfs -t vfat 32 -F /dev/hda1</code> → crear un fichero de sistema FAT32 en hda1.
| |
| # <code>fdformat -n /dev/fd0</code> → formatear un disco flooply.
| |
| # <code>mkswap /dev/hda3</code> → crear un fichero de sistema swap.
| |
|
| |
| == Partición de sistema swap ==
| |
|
| |
| # <code>mkswap /dev/hda3</code> → crear fichero de sistema swap.
| |
| # <code>swapon /dev/hda3</code> → activando una nueva partición swap.
| |
| # <code>swapon /dev/hda2 /dev/hdb3</code> → activar dos particiones swap.
| |
|
| |
| == Salvas ==
| |
|
| |
| # <code>dump -0aj -f /tmp/home0.bak /home</code> → hacer una salva completa del directorio '/home'.
| |
| # <code>dump -1aj -f /tmp/home0.bak /home</code> → hacer una salva incremental del directorio '/home'.
| |
| # <code>restore -if /tmp/home0.bak</code> → restaurando una salva interactivamente.
| |
| # <code>rsync -rogpav --delete /home /tmp</code> → sincronización entre directorios.
| |
| # <code>rsync -rogpav -e ssh --delete /home ip_address:/tmp</code> → rsync a través del túnel SSH.
| |
| # <code>rsync -az -e ssh --delete ip_addr:/home/public /home/local</code> → sincronizar un directorio local con un directorio remoto a través de ssh y de compresión.
| |
| # <code>rsync -az -e ssh --delete /home/local ip_addr:/home/public</code> → sincronizar un directorio remoto con un directorio local a través de ssh y de compresión.
| |
| # <code>dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr 'dd of=hda.gz</code>' → hacer una salva de un disco duro en un host remoto a través de ssh.
| |
| # <code>dd if=/dev/sda of=/tmp/file1</code> → salvar el contenido de un disco duro a un fichero. (En este caso el disco duro es “sda” y el fichero “file1”).
| |
| # <code>tar -Puf backup.tar /home/user</code> → hacer una salva incremental del directorio '/home/user'.
| |
| # <code>tar -czv --exclude=/root/dir1/* -f /var/salvas/cfg_$(date +%F_%H%M).tgz /etc /root</code> → 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.
| |
| # <code>( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr 'cd /home/share/ && tar x -p</code>' → copiar el contenido de un directorio en un directorio remoto a través de ssh.
| |
| # <code>( tar c /home ) | ssh -C user@ip_addr 'cd /home/backup-home && tar x -p</code>' → copiar un directorio local en un directorio remoto a través de ssh.
| |
| # <code>tar cf - . | (cd /tmp/backup ; tar xf - )</code> → copia local conservando las licencias y enlaces desde un directorio a otro.
| |
| # <code>find /home/user1 -name '*.txt' | xargs cp -av --target-directory=/home/backup/ --parents</code> → encontrar y copiar todos los ficheros con extensión '.txt' de un directorio a otro.
| |
| # <code>find ~/ -type f -not -iname '*.mp*' -not \( -iregex '.*\.mozilla/.*' -o -iregex '.*\.thumbnails/.*' \) -prune -mtime 14 -print0 | xargs -0 tar -czf /var/salvas/myhome.tgz</code> → 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 <code>.mozilla/</code> y <code>.thumbnails/</code>.
| |
| # <code>find /var/log -name '*.log' | tar cv --files-from=- | bzip2 > log.tar.bz2</code> → encontrar todos los ficheros con extensión '.log' y hacer un archivo bzip.
| |
| # <code>dd if=/dev/hda of=/dev/fd0 bs=512 count=1</code> → hacer una copia del MRB (Master Boot Record) a un disco floppy.
| |
| # <code>dd if=/dev/fd0 of=/dev/hda bs=512 count=1</code> → restaurar la copia del MBR (Master Boot Record) salvada en un floppy.
| |
|
| |
| == CDROM ==
| |
|
| |
| # <code>cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force</code> → limpiar o borrar un cd regrabable.
| |
| # <code>mkisofs /dev/cdrom > cd.iso</code> → crear una imagen iso de cdrom en disco.
| |
| # <code>mkisofs /dev/cdrom | gzip > cd_iso.gz</code> → crear una imagen comprimida iso de cdrom en disco.
| |
| # <code>mkisofs -J -allow-leading-dots -R -V “Label CD” -iso-level 4 -o ./cd.iso data_cd</code> → crear una imagen iso de un directorio.
| |
| # <code>cdrecord -v dev=/dev/cdrom cd.iso</code> → quemar una imagen iso.
| |
| # <code>gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom -</code> → quemar una imagen iso comprimida.
| |
| # <code>mount -t udf,iso9660 -o loop cd.iso /mnt/iso</code> → montar una imagen iso.
| |
| # <code>cd-paranoia -B</code> → llevar canciones de un cd a ficheros wav.
| |
| # <code>cd-paranoia -- ”-3”</code> → llevar las 3 primeras canciones de un cd a ficheros wav.
| |
| # <code>cdrecord --scanbus</code> → escanear bus para identificar el canal scsi.
| |
| # <code>dd if=/dev/hdc | md5sum</code> → hacer funcionar un md5sum en un dispositivo, como un CD.
| |
| # <code>eject -v</code> → expulsar un medio o disco extraíble, ofreciendo información adicional.
| |
|
| |
| == Trabajo con la red (LAN Y WIFI) ==
| |
|
| |
| # <code>ifconfig eth0</code> → mostrar la configuración de una interfaz de red Ethernet.
| |
| # <code>ifup eth0</code> → activar la interfaz <code>eth0</code>.
| |
| # <code>ifdown eth0</code> → deshabilitar la interfaz <code>eth0</code>.
| |
| # <code>ifconfig eth0 192.168.1.1 netmask 255.255.255.0</code> → configurar una dirección IP.
| |
| # <code>ifconfig eth0 promisc</code> → configurar <code>eth0</code> en modo promiscuo para obtener los paquetes (''sniffing'').
| |
| # <code>dhclient eth0</code> → activar la interface 'eth0' en modo dhcp.
| |
| # <code>route -n</code> → mostrar tabla de rutas.
| |
| # <code>route add -net 0/0 gw IP_Gateway</code> → configurar entrada predeterminada.
| |
| # <code>ip route show | grep default | awk {'print $3'}</code> → conocer la puerta de enlace predeterminada.
| |
| # <code>route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1</code> → configurar ruta estática para buscar la red <code>192.168.0.0/16</code>.
| |
| # <code>route del 0/0 gw IP_gateway</code> → eliminar la ruta estática.
| |
| # <code>echo 1 > /proc/sys/net/ipv4/ip_forward</code> → activar el redireccionamiento de paquetes ip.
| |
| # <code>hostname</code> → mostrar el nombre del host del sistema.
| |
| # <code>host www.example.com</code> → buscar el nombre del host para resolver el nombre a una dirección ip (1).
| |
| # <code>nslookup www.example.com</code> → buscar el nombre del host para resolver el nombre a una direccióm ip y viceversa (2).
| |
| # <code>ip link show</code> → mostar el estado de enlace de todas las interfaces.
| |
| # <code>mii-tool eth0</code> → mostar el estado de enlace de <code>eth0</code>.
| |
| # <code>ethtool eth0</code> → mostrar las estadísticas de la interfaz de red <code>eth0</code>.
| |
| # <code>netstat -tup</code> → mostrar todas las conexiones de red activas y sus PID.
| |
| # <code>netstat -tupl</code> → mostrar todos los servicios de escucha de red en el sistema y sus PID.
| |
| # <code>netstat -punta</code> → mostrar todas las conexiones activas por dirección IP y puerto.
| |
| # <code>tcpdump tcp port 80</code> → mostrar todo el tráfico HTTP.
| |
| # <code>iwlist scan</code> → mostrar las redes inalámbricas.
| |
| # <code>iwconfig eth1</code> → mostrar la configuración de una interfaz de red inalámbrica.
| |
| # <code>whois www.example.com</code> → buscar en base de datos Whois.
| |
| # <code>iftop -nNP -i eth0</code> → mostrar en tiempo real las conexiones abiertas en eth0 y su tasa de transferencia.
| |
| # <code>sockstat</code> → mostrar información sobre las conexiones abiertas.
| |
| # <code>arp-scan -l</code> → descubrir en la red las direcciones IP y MAC.
| |
| # <code>nm-tool</code> → muestra configuración de red (en caso de usar Network Manager obtiene los DNS).
| |
|
| |
| == Redes de Microsoft Windows (Samba) ==
| |
|
| |
| # <code>nbtscan ip_addr</code> → resolución de nombre de red bios.
| |
| # <code>nmblookup -A ip_addr</code> → resolución de nombre de red bios.
| |
| # <code>smbclient -L ip_addr/hostname</code> → mostrar acciones remotas de un host en windows.
| |
|
| |
| == Cortafuegos (iptables) ==
| |
|
| |
| # <code>iptables -t filter -L</code> → mostrar todas las cadenas de la tabla de filtro.
| |
| # <code>iptables -t nat -L</code> → mostrar todas las cadenas de la tabla nat.
| |
| # <code>iptables -t filter -F</code> → limpiar todas las reglas de la tabla de filtro.
| |
| # <code>iptables -t nat -F</code> → limpiar todas las reglas de la tabla nat.
| |
| # <code>iptables -t filter -X</code> → borrar cualquier cadena creada por el usuario.
| |
| # <code>iptables -t filter -A INPUT -p tcp --dport telnet -j ACCEPT</code> → permitir las conexiones telnet para entar.
| |
| # <code>iptables -t filter -A OUTPUT -p tcp --dport http -j DROP</code> → bloquear las conexiones HTTP para salir.
| |
| # <code>iptables -t filter -A FORWARD -p tcp --dport pop3 -j ACCEPT</code> → permitir las conexiones POP a una cadena delantera.
| |
| # <code>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</code> → 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).
| |
| # <code>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</code> → establecer un límite de 6 conexiones simultáneas por equipo a nuestro servidor web (útil para políticas de denegación por defecto).
| |
| # <code>iptables -t filter -A INPUT -j LOG --log-prefix “DROP INPUT”</code> → registrando una cadena de entrada.
| |
| # <code>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</code> → configurar un PAT (Puerto de traducción de dirección) en eth0, ocultando los paquetes de salida forzada. (Indicado para enlaces tipo ppp)
| |
| # <code>iptables -t nat -A POSTROUTING -s 192.168.0.127 -o eth0 -j SNAT --to-source 169.158.158.169</code> → 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)
| |
| # <code>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</code> → redireccionar los paquetes diriguidos de un host a otro.
| |
| # <code>iptables -t nat -S</code> → Listar todas las reglas activas en la tabla nat.
| |
| # <code>iptables-save -c > archivo</code> → Salvar las reglas en un archivo (incluyendo los contadores de paquetes y bytes).
| |
| # <code>iptables-restore -c < archivo</code> → Restaurar las reglas desde un archivo (incluyendo los contadores de paquetes y bytes).
| |
|
| |
| == Monitoreando y depurando ==
| |
|
| |
| # <code>top</code> → mostrar en tiempo real las tareas de linux.
| |
| # <code>htop</code> → mostrar y gestionar las tareas con una interfaz amistosa.
| |
| # <code>ps -eafw</code> → muestra las tareas Linux.
| |
| # <code>ps -e -o pid,args --forest</code> → muestra las tareas Linux en un modo jerárquico.
| |
| # <code>ps -o pid,cmd -ww -C wget</code> → listar todas las instancias del comando <code>wget</code> con sus argumentos.
| |
| # <code>pstree</code> → mostrar un árbol sistema de procesos.
| |
| # <code>pidof pppd</code> → mostrar el <code>pid</code> del proceso <code>pppd</code>.
| |
| # <code>kill -9 ID_Processo</code> → forzar el cierre de un proceso y terminarlo.
| |
| # <code>kill -1 ID_Processo</code> → forzar un proceso para recargar la configuración.
| |
| # <code>killall Nombre_Proceso</code> → terminar un proceso por el nombre del comando y no por el ID.
| |
| # <code>kill -HUP $(ps -A -o state,pid --no-header | grep -e '^[Zz]' | awk '{print $2}' | xargs)</code> → terminar todos los procesos ''zombies''.
| |
| # <code>lsof -p $$</code> → mostrar una lista de ficheros abiertos por procesos.
| |
| # <code>lsof /home/user1</code> → muestra una lista de ficheros abiertos en un camino dado del sistema.
| |
| # <code>strace -c ls >/dev/null</code> → mostrar las llamadas del sistema hechas y recibidas por un proceso.
| |
| # <code>strace -f -e open ls >/dev/null</code> → mostrar las llamadas a la biblioteca.
| |
| # <code>watch -n1 'cat /proc/interrupts</code>' → mostrar interrupciones en tiempo real.
| |
| # <code>last reboot</code> → mostrar historial de reinicio.
| |
| # <code>lsmod</code> → mostrar los módulos del kernel cargados.
| |
| # <code>free -m</code> → muestra el estado de la RAM en megabytes.
| |
| # <code>smartctl -A /dev/hda</code> → monitorear la fiabilidad de un disco duro a través de SMART.
| |
| # <code>smartctl -i /dev/hda</code> → chequear si SMART está activado en un disco duro.
| |
| # <code>tail -f /var/log/dmesg</code> → mostrar eventos inherentes al proceso de carga del kernel.
| |
| # <code>tail -f /var/log/messages</code> → mostrar los eventos del sistema.
| |
| # <code>multitail --follow-all /var/log/{dmesg,messages}</code> → mostrar dos registros de eventos en una misma pantalla.
| |
|
| |
| == Seguridad y Cifrado ==
| |
|
| |
| # <code>base64 /home/archivo > /home/archivo-codificado</code> → codifica “archivo” en 'base64' y lo guarda en /home
| |
| # <code>base64 -d /home/archivo-codificado > /home/archivo</code> → decodifica “archivo-codificado” y lo guarda en /home
| |
| # <code>openssl req -x509 -nodes -days 3650 -newkey rsa:1024 -out /etc/millave.crt -keyout /etc/millave.key</code> → crea un certificado auto-firmado para cifrar el tráfico web con SSL.
| |
| # <code>htpasswd -c -m /etc/apache2/.htpasswd nombreusuario</code> → genera un archivo '.htpasswd' para proteger un sitio web con auntenticación.
| |
|
| |
| == Otros comandos útiles ==
| |
|
| |
| # <code>apropos palabraclave</code> → mostrar una lista de comandos que pertenecen a las palabras claves de un programa; son útiles cuando tú sabes qué hace tu programa, pero desconoces el nombre del comando.
| |
| # <code>man ping</code> → mostrar las páginas del manual on-line; por ejemplo, en un comando ping, usar la opción '-k' para encontrar cualquier comando relacionado.
| |
| # <code>man -t ping | ps2pdf - ping.pdf</code> → convertir las páginas del manual del comando ping en un archivo pdf (para lo cual es necesario haber instalado Ghostscript).
| |
| # <code>mkbootdisk --device /dev/fd0 `uname -r`</code> → crear un floppy boteable.
| |
| # <code>gpg -c file1</code> → codificar un fichero con guardia de seguridad GNU.
| |
| # <code>gpg file1.gpg</code> → decodificar un fichero con Guardia de seguridad GNU.
| |
| # <code>wget -r www.example.com</code> → descargar un sitio web completo.
| |
| # <code>wget -c www.example.com/file.iso</code> → descargar un fichero con la posibilidad de parar la descargar y reanudar más tarde.
| |
| # <code>echo 'wget -c www.example.com/files.iso' | at 09:00</code> → Comenzar una descarga a cualquier hora. En este caso empezaría a las 9 horas.
| |
| # <code>ldd /usr/bin/ssh</code> → mostrar las bibliotecas compartidas requeridas por el programa ssh.
| |
| # <code>alias hh='history</code>' → colocar un alias para un commando. En este caso, para invocar el historial con <code>hh</code>.
| |
| # <code>chsh</code> → cambiar el comando Shell.
| |
| # <code>chsh --list-shells</code> → es un comando adecuado para saber si tienes que hacer remoto en otra terminal.
| |
| # <code>who -a</code> → mostrar quien está registrado, e imprimir hora del último sistema de importación, procesos muertos, procesos de registro de sistema, procesos activos producidos por init, funcionamiento actual y últimos cambios del reloj del sistema.
| |
| # <code>echo "128*1024*1024" | bc</code> → calcular desde la consola el tamaño en bytes de 128 MiB.
| |
| # <code>sudo !!</code> → ejecutar como superusuario el último comando tecleado.
| |
| # <code>clear</code> → limpiar la pantalla.
| |
| # <code>uncomando > archivodesalida.txt 2>&1</code> → ejecuta un comando y redirige la salida a un archivo, combinando en este tanto STDOUT como STDERR.
| |
| # <code>uncomando > archivodesalida.txt 2> archivoerrores.txt</code> → ejecuta un comando, redirige la salida (STDOUT) a un archivo, y los errores (STDERR) a otro.
| |
| # <code>uncomando | tee archivodesalida.txt</code> → ejecuta un comando, muestra la salida en la pantalla y simultáneamente la escribe a un archivo.
| |