Comandos básicos GNU/Linux#
Control de procesos#
ps ver procesos ps -ef
top, htop monitorización de procesos
PID Número único que identifica cada proceso en el sistema
USUARIO Nombre del usuario que es dueño del proceso
PR Prioridad del proceso en el sistema operativo
NI Valor de «amabilidad» que afecta cuánto CPU recibe el proceso
VIRT Memoria virtual total que el proceso está usando
RES Memoria física (RAM) real que el proceso está usando
SHR Memoria que el proceso comparte con otros procesos
%CPU Porcentaje de tiempo de CPU que el proceso está usando
%MEM Porcentaje de memoria RAM total que el proceso está usando
S Estado actual del proceso (ejecutándose, dormido, etc.), los estados más comunes son:
R Ejecutándose o listo para ejecutar
S Durmiendo (esperando por algo)
D Durmiendo profundamente (no se puede interrumpir)
Z Zombie (proceso terminado pero no eliminado)
T Detenido/pausado
Atajos de teclado
[Espacio] Realiza un refresco de la pantalla
[h] Muestra la pantalla de ayuda
[k] Mata un proceso, pedirá la ID del proceso y la señal que hay que enviarle.
[n] Cambia el número de procesos que se muestran en pantalla.
[u] Ordena por usuario.
[M] Ordena por uso de memoria.
[P] Ordena por uso del CPU.
nice ejecuta un comando con una prioridad determinada, o modifica la prioridad a de un proceso
kill mata procesos
pstree muestra en vista de árbol (de forma jerárquica) una lista de los procesos en ejecución.
nohup permite mantener la ejecución de un comando pese a salir de la terminal
jobs, fg %2, bg %1, ctrol+c, ctrol+z
$ sleep 10m & #mandamos al segundo plano añadiendo & al final
[1] 7768
$ sleep 10m &
[2] 7770
$ sleep 10m &
[3] 7771
$ jobs
[1] Ejecutando sleep 10m &
[2]- Ejecutando sleep 10m &
[3]+ Ejecutando sleep 10m &
$ fg %1 #lo traemos al primer plano, bloquea la terminal
sleep 10m #para desbloquear terminal y no matar el proceso Ctrol+z
^Z
[1]+ Detenido sleep 10m
$ jobs
[1]+ Detenido sleep 10m
[2] Ejecutando sleep 10m &
[3]- Ejecutando sleep 10m &
$ bg %1 #lo volvemos a mandar al segundo plano
[1]+ sleep 10m &
$ jobs
[1] Ejecutando sleep 10m &
[2]- Ejecutando sleep 10m &
[3]+ Ejecutando sleep 10m &
$ kill %1 #matamos el proceso 1
$ jobs
[1] Terminado sleep 10m
[2]- Ejecutando sleep 10m &
[3]+ Ejecutando sleep 10m &
$ fg %2 #mandamos el proceso 2 al segundo plano
sleep 10m #para desbloquear terminal y matar el proceso Ctrol+c
^C
$ jobs
[3]+ Ejecutando sleep 10m &
sleep 10 & # Ponemos tarea en segundo plano añadiendo & al final del comando.
fg %1 # Ponerlo en primer plano
bg %1
Ctrl+Z # para detener una tarea en primer plano
Ctrl+C # para cancelar una tarea en primer plano
/etc/security/limits.conf es utilizado en sistemas Unix y Linux para configurar límites de recursos y privilegios para usuarios y grupos. Este archivo permite establecer restricciones específicas sobre cómo los usuarios pueden utilizar los recursos del sistema, como la cantidad de memoria, la cantidad de procesos, el número de archivos abiertos, entre otros. También se utiliza para establecer prioridades y políticas de programación para procesos específicos.nLos límites definidos en «/etc/security/limits.conf» son aplicados por el sistema de gestión de límites de recursos (RLIMIT) del kernel. Esto permite evitar el uso excesivo de recursos por parte de usuarios o grupos, lo que podría llevar a una degradación del rendimiento del sistema o incluso a problemas de seguridad.
/proc/self es un atajo que permite a un proceso acceder a información sobre sí mismo a través del sistema de archivos virtual /proc, que proporciona una ventana al kernel para monitorear y gestionar procesos y recursos del sistema.
Ficheros y directorios#
ls listar archivos y carpetas
ls -l #ver archivos y directorios en formato detallado o extendido ls -la #ver archivos ocultos (empiezan por .) ls *dat #ver los archvios acabados en dat ls *T* #ver archivos que contienen T ls ???.dat #ver archivos que tienen 3 caracteres y termian en .dat ls -ai #ver inodos
ln -s hacer links simbólicos -P son links duros sobre archivos
stat muestra información del inodo
cp -r copiar
mv mover, renombrar
rm -fr borrar
mkdir crear directorio
cd cambiar directorio
Entrar en A :
cd ASubir un nivel :
cd ..Ir al home (ruta al directorio personal del usuario actual):
cd <enter>ocd $HOME
whereis ocaliza los archivos binarios (ejecutables), páginas de manual (man) y archivos fuente de un comando o programa
pwd muestra tu ubicación como ruta absoluta (ej: /home/usuario/docs), que empieza desde / y es fija. Las rutas relativas (ej: docs) dependen del directorio actual: si pwd dice /home/usuario/docs, entonces es la ruta relativa docs y /home/usuario/docs la ruta absoluta
locate es muy rápido porque busca en una base de datos preconstruida
locate sshd_config locate *.ssh locate -i SSH # Ignorar mayúsculas/minúsculas locate -r "ssh[0-9]*\.conf$" # utiliza expresiones regulares sudo updatedb # actualizar su base de datos
find busca en tiempo real recorriendo el sistema de archivos
find /etc -name "sshd_config" # Busca en el directorio /etc (y todos sus subdirectorios) un archivo llamado exactamente "sshd_config" find /etc -iname "sshd_config" # ignorando mayúsculas/minúsculas find /etc -name "sshd_config" -ls # muestra permisos, dueño, tamaño, etc. find -name *dat find -not -name *dat find . -type f -size +20M # para buscar por tamaño find /home -size 1M # exactamente de 1MB. +1M busca los mayores y con -1M los menores de 1MB
Alias#
Un alias es una forma de crear atajos o abreviaturas para comandos largos o frecuentemente utilizados.
Puedes definir alias en Bash utilizando el comando alias. Por ejemplo, si deseas crear un alias para un comando largo como ls -l, puedes hacerlo de la siguiente manera:
alias ll='ls -l'
Para hacer que los alias sean persistentes y estén disponibles cada vez que abras una terminal, puedes agregarlos al archivo de configuración donde se cargar los valores por defecto cada vez que abres una terminal ~/.bashrc
Visualizadores de archivos#
cat visualizar el contenido archivo, si queremos numerar las lineas
cat -nmore ver archivos página por página, si queremos abrir el archivo comenzando en la línea número n
more +n, more +50 acceso.logless visor avanzado con navegación completa
Editor vi#
vi hola.dat abrir y editar el archivo hola.dat
i -> modo insertar
<esc> -> modo comandos
:w -> guardar
:q -> salir
:wq -> guardar y salir
:q! -> salir sin guardariiuyuyiuy
:n -> ir a la linea n
shift + R -> REEMPLZAR
/cadena -> buscar cadena (n, shift+n)
N yy -> copiar N lineas
N dd -> borrar N lineas
p -> pegar
u -> undo
:redo -> rehacer
:%s/cadena1/cadena2/g -> sustituir una cadena
G -> ir al final del archivo
:set number -> ver los número de linea (:set nu ; :set nonu)
Para configurar configuración por defecto en el archivo .vimrc como por ejemplo:
$ cat ~/.vimrc filetype indent off
Para configurar que el editor vi sea nuestro editor de forma predeterminaada:
export EDITOR=/usr/bin/vim
Esta configuración se aplica solo para la sesión actual, para que sea permanente agrega esta línea al archivo .bashrc
echo 'export EDITOR=/usr/bin/vi' >> ~/.bashrc bash
Compresión#
tar, gzip, gunzip, zip combina una colección de archivos y carpetas en un solo archivo (conocido como «tarball»). Luego, puedes usar gzip (u otras herramientas como bzip2 o xz) para comprimir ese archivo .tar.
Para listar los archivos sin descomprimirlo podemos ejecutar tar -tvzf A.tar.gz
Instalar software#
apt-get update actualiza la lista de paquetes disponibles
apt-get upgrade actualiza el paquete indicado si existe versión nueva en repositorio.
apt-get install instala un paquete y sus dependencias (+install -remove)
con la opción –reinstall reinstala el paquete.
apt-get remove desinstala un paquete instalado (+install -remove)
apt-get purge desinstala eliminando ficheros de configuración.
apt-get install -f resuelve las dependencias de paquetes rotos instalando lo necesario.
dpkg –configure -a intenta reconfigurar todos los paquetes desplegados no configurados
dpkg -i instalación manual
Configuración de la red#
Optener IP local
ip aReiniciar tarjeta de red
sudo service networking restart
Activar/desactivar tajeta red
sudo ip link set enp0s3 down/up
NetPlan es la nueva utilidad para configurar la red, el antiguo /etc/network/interfaces ya no funciona. Debemos configurar /etc/netplan/01-*.yaml, por ejemplo:
network: ethernets: enp0s3: addresses: - 10.4.105.100/8 routes: - to: default via: 10.0.0.2 nameservers: addresses: [8.8.8.8] version: 2
Probar NetPlan
sudo netplan --debug apply
Aplicar NetPlan
sudo netplan apply
virtualBox#
VBoxManage list vms
VBoxManage list runningvms
VBoxManage startvm 'ubuntu-server' --type headless
VBoxManage controlvm 'ubuntu-server' savestate
Gestión de particiones#
gparted editor de particiones para el entorno de escritorio GNOME
fdisk utilidad de línea de comandos que se utiliza para manejar particiones de discos duros en sistemas operativos (vídeo).
fdisk -l # muestra discos y particiones que hay en el sistema fdisk /dev/sdX #para hacer el particionado del disco /dev/sdX # o crear nueva tabla de particiones (MSDOS) # n crear nueva particion (para poner tamaño +25G) # w escribir los cambios
cfdisk similar a fdisk, pero con una interfaz diferente
mkfs.ext4 /dev/sdX1 dar formato ext4 a la partición sdX1
fsck Utilidad para detectar, verificar y corregir los errores del sistema de archivo
mkswap /dev/sdX1 para convertir la partición /dev/sdX1 al formato SWAP
mkswapon activan particiones de swap
mkswapoff desactivan particiones de swap
df -h muestra el estado actual de las particiones montadas
du -skh tamaño de archivos
mount se utiliza para conectar (montar) un sistema de archivos (disco, USB, partición, recurso de red) en un directorio (punto de montaje) para poder acceder a sus archivos. Para montar utilizamos
mount [opciones] <dispositivo> <punto_montaje>y para desmontarumount <punto_montaje>mount /dev/sda1 /media/carpeta1 umount /media/carpeta1 mount -t ext3 /dev/sdb3 /home
lsblk -a nos muestra información de todos los dispositivos de bloque
file sirve para determinar el tipo archivo
dd copia y clona datos discos y particiones. Podemos usarlo para limpiar nuestro MBR y la tabla de particiones
dd if=/dev/zero of=/dev/sda bs=512 count=1
/etc/fstab # contiene información sobre sistemas de archivos del sistema y sus puntos de montaje y opciones, las distribuciones recientes, se implementa un sistema de automontaje automático.
$ cat /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda2 during curtin installation /dev/disk/by-uuid/4609be84-f57c-4ee0-b876-3839f95d628c / ext4 defaults 0 1 /dev/disk/by-uuid/f7832f7d-90b0-4c39-9145-4d5dfaaf5d47 none swap sw 0 0 # /home was on /dev/sdb during curtin installation /dev/disk/by-uuid/093e58be-28c0-4620-87cc-c77e3cb03b8c /home ext4 defaults 0 1 /swap.img none swap sw 0 0 $ sudo file -Ls /dev/sdb /dev/sdb: Linux rev 1.0 ext4 filesystem data, UUID=093e58be-28c0-4620-87cc-c77e3cb03b8c (needs journal recovery) (extents) (64bit) (large files) (huge files)
La estructura de las instrucciones es de 6 columnas separadas por espacios o tabuladores
<dispositivo> <punto_de_montaje> <sistema_de_archivos> <opciones> <dump-freq> <pass-num>
<dispositivo> es el directorio lógico que hace referencia a una partición o recurso. Nombre del dispositivo o etiqueta, podríamos sustituir la segunda linea por:
/dev/sdb1 /HOME ext4 defaults 0 2
<punto_de_montaje> es la carpeta en que se proyectarán los datos del sistema de archivos, en la liea anterior /HOME
<sistema de archivos> es el algoritmo que se utilizará para interpretarlo.
<opciones> es el lugar donde se especifican los parámetros que mount utilizará para montar el dispositivo, deben estar separadas por comas. Las opciones de montaje son numerosas. Las más usadas se listan a continuación:
auto : indica que el dispositivo se monta siempre que se inicie el sistema. La opuesta es noauto.
rw: indica que el dispositivo se monta con permisos de lectura y escritura.
ro: indica que el dispositivo se monta con permisos de lectura solamente.
owner: indica que el usuario conectado al sistema localmente en primer lugar tiene derechos a montar y desmontar el dispositivo (se adueña de este).
user : indica que cualquier usuario puede montar y solo el mismo usuario podrá desmontar el dispositivo. La opción opuesta es nouser. users : indica que cualquier usuario puede montar y cualquiera también, puede desmontar el dispositivo.
suid : indica que el permiso ``s”” tenga efecto para los ejecutables presentes en el dispositivo. La opción opuesta es nosuid. (Todos los ejecutables del sistema se ejecutan como si fueran invocados por el root)
exec : indica que los binarios ejecutables almacenados en el dispositivo se pueden ejecutar. La opción opuesta es noexec.
async : expresa que todas las operaciones de entrada y salida se hacen de forma asíncrona, o sea, no necesariamente en el momento en que se invocan. La opción opuesta es sync.
dev : indica que se interprete como tal a los dispositivos especiales de bloques y de caracteres presentes en el dispositivo. La opción opuesta es nodev.
defaults : es una opción equivalente a la unión de rw, suid, dev, exec, auto, nouser y async.
<dump-freq> es el comando que utiliza dump para hacer respaldos del sistema de archivos, si es cero no se toma en cuenta ese dispositivo.
<pass-num> indica el orden en que la aplicación fsck revisará la partición en busca de errores durante el inicio, si es cero el dispositivo no se revisa.,23
rsync#
rsync sirve para sincronización de archivos
rsync [opciones] [origen] [destino]
Opciones comunes
-v (verbose): Muestra información detallada sobre el proceso de sincronización.
-r (recursive): Copia directorios recursivamente.
-a (archive): Modo de copia de seguridad, que conserva metadatos como permisos, propiedades y fechas de modificación.
–delete: Elimina archivos en el destino que no existen en el origen (útil para mantener los dos sistemas iguales).
–exclude: Permite excluir ciertos archivos o patrones de archivos de la sincronización.
-n (dry-run): Realiza una simulación de la sincronización sin realizar cambios en el sistema de archivos.
-P (progress): Muestra el progreso de la transferencia.
Ejemplos de uso
#Copiar un directorio local a otro lugar local
rsync -av /ruta/de/origen/ /ruta/de/destino/
#Copiar de local a un servidor remoto (SSH)
rsync -av -e ssh /ruta/local/ usuario@servidor:/ruta/destino/
#Copiar de un servidor remoto a local
rsync -av -e ssh usuario@servidor:/ruta/origen/ /ruta/local/destino/
#Eliminar archivos en el destino que no existen en el origen
rsync -av --delete /ruta/de/origen/ /ruta/de/destino/
Consejos adicionales
Usa
-npara simular una sincronización antes de ejecutarla realmente. Esto te permitirá ver qué cambios se realizarán sin efectuarlos.Usa
--excludepara evitar copiar ciertos archivos o directorios. Por ejemplo,--exclude=archivo.txtevitará la copia del archivo llamado archivo.txt.