Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:linux_para_devops_y_sysadmin:comandos_avanzados

¡Esta es una revisión vieja del documento!


Comandos avanzados

Sección perteneciente al curso Linux para DevOps y Sysadmin.

Comando df

El comando df informe sobre la utilización de disco en un sistema de ficheros.

El uso más habitual es:

df -h
  • -h: legible para humanos
S.ficheros     Tamaño Usados  Disp Uso% Montado en
tmpfs            196M   1,6M  195M   1% /run
/dev/sda3         20G    12G  6,4G  65% /
tmpfs            980M      0  980M   0% /dev/shm
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
/dev/sda2        512M   6,1M  506M   2% /boot/efi
tmpfs            196M   164K  196M   1% /run/user/1000

Si además quisiéramos incluir los pseudo sistemas de ficheros (/sys, /proc) y los inaccesibles, empleamos el argumento a:

$ df -ah
S.ficheros     Tamaño Usados  Disp Uso% Montado en
sysfs               0      0     0    - /sys
proc                0      0     0    - /proc
udev             943M      0  943M   0% /dev
devpts              0      0     0    - /dev/pts
tmpfs            196M   1,6M  195M   1% /run
/dev/sda3         20G    12G  6,4G  65% /
securityfs          0      0     0    - /sys/kernel/security
tmpfs            980M      0  980M   0% /dev/shm
tmpfs            5,0M   4,0K  5,0M   1% /run/lock
cgroup2             0      0     0    - /sys/fs/cgroup
pstore              0      0     0    - /sys/fs/pstore
bpf                 0      0     0    - /sys/fs/bpf
systemd-1           -      -     -    - /proc/sys/fs/binfmt_misc
hugetlbfs           0      0     0    - /dev/hugepages
mqueue              0      0     0    - /dev/mqueue
tracefs             0      0     0    - /sys/kernel/tracing
debugfs             0      0     0    - /sys/kernel/debug
fusectl             0      0     0    - /sys/fs/fuse/connections
configfs            0      0     0    - /sys/kernel/config
ramfs               0      0     0    - /run/credentials/systemd-sysusers.service
/dev/loop1        74M    74M     0 100% /snap/core22/858
/dev/loop0       128K   128K     0 100% /snap/bare/5
/dev/loop3       238M   238M     0 100% /snap/firefox/2987
/dev/loop2        64M    64M     0 100% /snap/core20/1974
/dev/loop4       350M   350M     0 100% /snap/gnome-3-38-2004/143
/dev/loop5       486M   486M     0 100% /snap/gnome-42-2204/120
/dev/loop6        92M    92M     0 100% /snap/gtk-common-themes/1535
/dev/loop7        13M    13M     0 100% /snap/snap-store/959
/dev/loop9        54M    54M     0 100% /snap/snapd/19457
/dev/loop8       512K   512K     0 100% /snap/snapd-desktop-integration/83
/dev/sda2        512M   6,1M  506M   2% /boot/efi
binfmt_misc         0      0     0    - /proc/sys/fs/binfmt_misc
tmpfs            196M   164K  196M   1% /run/user/1000
gvfsd-fuse          0      0     0    - /run/user/1000/gvfs
tmpfs            196M   1,6M  195M   1% /run/snapd/ns
nsfs                0      0     0    - /run/snapd/ns/firefox.mnt
/dev/sda3         20G    12G  6,4G  65% /var/snap/firefox/common/host-hunspell
nsfs                0      0     0    - /run/snapd/ns/snap-store.mnt
nsfs                0      0     0    - /run/snapd/ns/snapd-desktop-integration.mnt
/dev/loop10       74M    74M     0 100% /snap/core22/864
/dev/loop11      486M   486M     0 100% /snap/gnome-42-2204/126

Comando du

Muestra una estimación del espacio ocupado por ficheros y directorios.

du -sh
  • -s: espacio utilizado real
  • -h: muestra el tamaño en megabytes.
$ du -sh /home
17M	/home

Comando grep

Este comando permite encontrar líneas de texto que contengan una cadena o patrón dentro de uno o varios archivos.

Buscar el texto ACPI en el fichero /var/log/syslog:

grep ACPI /var/log/syslog

Si añadimos el argumento --color resaltará en pantalla las coincidencias.

Otro argumento interesante es -i que permite no hacer distinción entre mayúsculas y minúsculas:

grep -i error /var/log/syslog

Si queremos que muestre el número de línea:

grep -n ACPI /var/log/syslog

El comando grep se puede concatenar con otros comandos a través de tuberías:

lscpu | grep -i model

Comando head

Imprime las primeras líneas de un fichero. Por defecto muestra las 10 primeras líneas:

head fichero

Para indicar el número de líneas a mostrar, usamos el argumento -n:

$ head -n 4 /var/log/syslog
head -n5 /var/log/syslog
Sep 11 17:42:15 ubuntu-devops kernel: [    0.000000] Linux version 6.2.0-32-generic (buildd@lcy02-amd64-076) (x86_64-linux-gnu-gcc-11 (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0, GNU ld (GNU Binutils for Ubuntu) 2.38) #32~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 18 10:40:13 UTC 2 (Ubuntu 6.2.0-32.32~22.04.1-generic 6.2.16)
Sep 11 17:42:15 ubuntu-devops kernel: [    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.2.0-32-generic root=UUID=2e064991-4618-44cf-ae59-725ef1c9bb26 ro quiet splash
Sep 11 17:42:15 ubuntu-devops kernel: [    0.000000] KERNEL supported cpus:
Sep 11 17:42:15 ubuntu-devops kernel: [    0.000000]   Intel GenuineIntel
Sep 11 17:42:15 ubuntu-devops kernel: [    0.000000]   AMD AuthenticAMD

El comando head también se puede usar con otros comandos mediante tuberías:

lsusb | head -n2

Comando locate

Busca ficheros y directorios.

locate deploy

Comando more y less

El comando more muestra el resultado de un comando de forma paginada, es decir, si la salida por pantalla va a ocupar más de lo visible, lo va separando por páginas.

ps -ef | more

También se puede utilizar para visualizar cualquier fichero:

more /var/log/syslog

El comando less es más potente, no solo pagina los resultados y permite movernos, sino que además podemos hacer búsquedas.

Comando tail

Muestra la parte final de un archivo.

Por defecto imprime las últimas 10 líneas.

tail /var/log/syslog

Si queremos decir el número de líneas a mostrar, usamos el argumento -n:

tail -n 2 /var/log/syslog

Algo muy útil es usar el argumento -f que mantiene en funcionamiento tail y muestra los datos que se van añadiendo al archivo:

tail -f /var/log/syslog

Comando htop y top

El comando top muestra los procesos y más información del sistema.

top - 16:54:30 up  6:28,  4 users,  load average: 0,00, 0,08, 0,16
Tareas: 186 total,   2 ejecutar,  184 hibernar,    0 detener,    0 zombie
%Cpu(s):  0,2 us,  0,3 sy,  0,0 ni, 99,3 id,  0,0 wa,  0,0 hi,  0,2 si,  0,0 st
MiB Mem :   1959,4 total,    663,8 libre,    616,3 usado,    679,3 búfer/caché
MiB Intercambio:   2140,0 total,   1981,8 libre,    158,2 usado.   1146,0 dispon Mem

    PID USUARIO   PR  NI    VIRT    RES    SHR S  %CPU  %MEM     HORA+ ORDEN
    380 systemd+  20   0   14824   4096   3328 S   0,3   0,2   0:26.68 systemd-oomd
   2013 jm        20   0  503460  16800  10016 S   0,3   0,8   0:00.88 update-notifier
  22853 jm        20   0   21956   4096   3328 R   0,3   0,2   0:00.03 top
      1 root      20   0  168000  10536   5544 S   0,0   0,5   0:05.51 systemd
      2 root      20   0       0      0      0 S   0,0   0,0   0:00.00 kthreadd
      3 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 slub_flushwq
      6 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 netns
      8 root       0 -20       0      0      0 I   0,0   0,0   0:00.00 kworker/0:0H-eve+

El comando htop muestra la misma información que top, pero de forma más agradable.También podemos realizar acciones sobre los procesos mediante atajos de teclado como hacer búsquedas, filtrar por algún parámetro, etc.

En Ubuntu, el comando htop se instala mediante el paquete htop

Comando wget

Descarga ficheros de una URL de forma no interactiva.

wget https://releases.ubuntu.com/22.04.3/ubuntu-22.04.3-desktop-amd64.iso

Firejail - securiza tus aplicaciones en linux

Firejail permite “enjaular” una aplicación y que se ejecute de forma segura.

En Ubuntu, se instala con el paquete fairjail.

Si queremos ejecutar una aplicación con Fairjail:

fairjail firefox

Instalar php y python en un contenedor de docker

En Ubuntu, instaremos Docker con el paquete docker.io y Docker Compose con docker-compose.

Probamos la instalación de Docker creando un contenedor de la imagen de Ubuntu:

run -dti --name ubuntu ubuntu:latest

Nos metemos en el contenedor:

docker exec -ti ubuntu bash

Una vez dentro del contenedor, actualizamos los repositorios y el sistema:

apt update && apt upgrade

Para instalar Python en este contenedor Ubuntu:

apt install software-properties-common python3

En Ubuntu suele venir instalado Python, así que no necesitaríamos hacer los pasos anteriores.

Para instalar PHP:

apt install php

Para detener el contenedor de Docker:

docker stop ubuntu

Y para eliminarlo:

docker rm ubuntu

Smartctl

Este comando consulta información sobre discos de almacenamiento.

En Ubuntu se instala mediante el paquete smartmoontools.

Para ver el resumen del estado de un dispositivo:

smartctl -A /dev/sda2

Con el argumento -i podemos ver información sobre el disco y ver cosas como si SMART está activado o no:

smartctl -i /dev/sda2

Ejemplo de salida:

smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.4.12-arch1-1] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Samsung based SSDs
Device Model:     Samsung SSD 860 EVO 1TB
Serial Number:    S4CSNF0MA00815A
LU WWN Device Id: 5 002538 e49a08082
Firmware Version: RVT03B6Q
User Capacity:    1.000.204.886.016 bytes [1,00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Sep 13 17:24:46 2023 CEST
SMART support is: Available - device has SMART capability.
Ssmartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.4.12-arch1-1] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Samsung based SSDs
Device Model:     Samsung SSD 860 EVO 1TB
Serial Number:    S4CSNF0MA00815A
LU WWN Device Id: 5 002538 e49a08082
Firmware Version: RVT03B6Q
User Capacity:    1.000.204.886.016 bytes [1,00 TB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.3/5528
ATA Version is:   ACS-4 T13/BSR INCITS 529 revision 5
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 3.0 Gb/s)
Local Time is:    Wed Sep 13 17:24:46 2023 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Umask

Establece la máscara de creación de archivos del usuario.

Tenemos que conocer el sistema de permisos en Linux:

Octal Símbolos Permisos
0 --- Sin permisos
1 --x Ejecución
2 -w- Escritura
3 -wx Escritura y ejecución
4 r-- Lectura
5 r-x Lectura y ejecución
6 rw- Lectura y escritura
7 rwx Lectura, escritura y ejecución

Los permisos se establecen a nivel de propietario, grupo y otros:

$ ls -l /var/
drwxr-xr-x  6 root root     4096 sep 11 17:00 spool

drwxr-xr-x se separaría:

  • d: indica que es un directorio.
  • rwx: permisos del propietario
  • r-x: permisos del grupo
  • r-x: permisos del resto (otros)

Si ejecutamos umask sin más, nos indica los permisos que se le asigna a un fichero o directorio cuando se crea:

umask
0002

Si le añadimos el argumento -S:

umask -S
u=rwx,g=rwx,o=rx

Para cambiar la máscara por defecto, editamos el fichero /etc/profile y añadimos al final:

umask 027

Guardamos y cargamos la nueva configuración en bash:

source /etc/profile

Nmap

Comando Whatis

Comando Date

Comando id

Comando alias

informatica/sistemas_operativos/cursos/linux_para_devops_y_sysadmin/comandos_avanzados.1694619870.txt.gz · Última modificación: por tempwin