Tabla de Contenidos

Sistemas Linux

Comandos

Ayuda

Sistema de archivos

Trabajar en background

Desde consola GUI

Podemos lanzar un proceso con la consola de la GUI del sistema y que este quede desconectado de ella de varias formas:

$ setsid gnome-calculator	# setid desconecta de la terminal una vez esta se cierra
$ gnome-calculator & disown	# <comando> & disown 
$ (gnome-calculator &)		# (<comando> &)
$ nohub gnome-calculator

Red

Hardware

Discos duros y particiones

Impresoras

Enviar a imprimir:

CPU

Procesos

Herramientas para archivos

Comprimir y empaquetar

tar

tar cvf archivo.tar archivos_seleccionados			Comprime
tar tvf archivo.tar						Ve el contenido
tar xvf archivo.tar						Descomprime

gzip

gzip archivo							Comprime el archivo
gunzip archivo.gz						Descomprime el archivo

Archivos tar.gz

tar czvf archivo.tar.gz archivos_seleccionados			Comprime
tar tzvf archivo.tar.gz						Ve el contenido
tar xzvf archivo.tar.gz						Descomprime

bzip2

bzip2 archivo							Comprime
bunzip2 archivo.bz2						Descomprime

Archivos tbz2

tar cvfj archivo.tbz2 archivos_seleccionados			Comprime
tar tvfj archivo.tbz2						Ve el contenido
tar xvfj archivo.tbz2						Descomprime

zip

Variables de entorno

Kernel

Mensajes del kernel

Shell

Uso de la consola

Nociones

Wildcards

$ ls com*					# lista todos los ficheros que empiezan por com
$ ls *.txt					# lista todos los ficheros con extensión .txt
$ cp file22.{txt,backup}			# Copia "file22.txt" a "file22.backup"
$ cat {file1,file2,file3} > combined_file	# Concatena los ficheros file1, file2, y file3 en combined_file
$ echo {a..z} 					# a b c d e f g h i j k l m n o p q r s t u v w x y z
$ echo {0..3}					# 0 1 2 3
$ touch bck{1..3}.tar				# Crea los ficheros bck1.tar, bck2.tar y bck3.tar
$ rm *[!cehg]					# Elimina todos los ficheros que no acaben en c, e, h o g
$ ls ?erro.txt					# lista todos los ficheros que tienen un carácter antes de 'erro.txt'

Comandos avanzados

find

Para encontrar un fichero a partir de un nombre utilizaríamos la siguiente estructura: find [ruta] -name nombre. Por ejemplo, para buscar en el directorio actual (y en sus subdirectorios) el fichero que contenga mule:

find -name *mule*

Aunque también podríamos indicar que busque hasta una profundidad de directorios con -maxdepth num:

find wordpress -maxdepth 1 -name '*js'

También podemos buscar por tamaño a partir del parámetro -size seguido de tamaño elegido (por ejemplo bloques (b), gigas (G)…), podríamos también utilizar + o - para indicar mayor o menor respectivamente. Por ejemplo para buscar los archivos menores de 100k lanazaremos:

find -size -100k

También podríamos buscar archivos vacíos con el parámetro -empty.
Otra forma útil de buscar ficheros es a partir del usuario. Para buscar ficheros de usuarios que ya no existan en el sistema (porque, por ejemplo, hayan sido borrados) utilizamos el parámetro -nouser:

find -nouser

Podemos buscar también a partir de los nombres de usuario con -user o -uid. Existe el parámetro -o que te permite decir, por ejemplo, que sean del usuario A o del B:

find -user root -o -user www-data

También existe el parámetro -not, para indicar que buscas los que no pertenezcan a ese usuario:

find -not -user www-data
find -user www-data -not -size +100k

Otro parámetro útil sería -group (para buscar por grupo).
Podemos indicar que sólo busque ficheros a partir de -type f. También existen parámetros para buscar por permisos, por ejemplo -readable, -writable y -executable, o -perm que te busca a partir de permisos expresados en números:

find -type f -perm -110

Para utilizar expresiones regulares utilizamos el parámetro -regex, debido a que hay distintos tipos de expresiones podremos combinarlo con -regextype (-regextype posix-egrep, o -regextype posix-egrep).

find -regextype posix-egrep -regex '.*(php|js)$'

Podemos buscar según el tiempo de acceso (-atime), la última vez que fue modificado (-mtime) o la que fue cambiado (-ctime). Por ejemplo los que han sido modificados en los dos últimos días:

find -mtime +2

O para decir hace más de dos pero menos de cinco:

find -mtime +2 -mtime -5

Para ejecutar un comando con la salida del find utilizaremos -exec segudio del comando donde allá donde pongamos {} corresponderá al elemento de salida y con \; sería el final del comando. Por ejemplo para cambiar el dueño a www-data de los ficheros que tengan por dueño a root haremos:

find -user root -exec chown www-data {} \;

locate

Es un comando de búsqueda como find, aunque no tan flexible pero sí que permite el indexado.
Existen las siguientes variantes:

Parámetros:

updatedb

Es el comando para actualizar la base de datos de locate. Para lanzarlo con sudo updatedb.
La configuración de esta está en /etc/updatedb.conf y se realiza utilizando “clave = valor” donde la clave son:

PRUNE_BIND_MOUNTS="yes"
# PRUNENAMES=".git .bzr .hg .svn"
PRUNEPATHS="/tmp /var/spool /media"
PRUNEFS="NFS nfs nfs4 rpc_pipefs afs binfmt_misc proc smbfs autofs iso9660 ncpfs coda devpts ftpfs devfs mfs shfs sysfs cifs lustre_lite tmpfs usbfs udf fuse.glusterfs fuse.sshfs ecryptfs fusesmb devtmpfs"

Notas

netcat

netcat o nc es un programa que te permite leer y escribir paquetes de red mediante conexiones TCP o UDP.
Para leer todas las opciones que permite utilizaríamos netcat -h, pero sus parámetros por defecto son ip y puerto (o rango de puertos).
Podríamos conectarnos a una máquina para escribir como si fuese telnet:

netcat www.google.com 80
netcat 192.168.1.20 12345

O podríamos ponernos en modo lectura:

netcat -l 12345

lsof

pv

Notas

Nomenclatura

Direcciones IP

Para indicar direcciones IP lo podremos hacer de la siguiente manera:

*                  Corresponde a todas.
192.168.1.1/24     Para indicar que serán válidos los 24 primeros bits, es decir, del 192.168.1.1 al 192.168.1.255