Comandos para monitoreo y administración de sistemas en GNU/Linux
Aunque los comandos presentados en esta página están enfocados en distribuciones de GNU/Linux, gran parte de la lógica y la sintaxis utilizada son aplicables en casi cualquier otro sistema compatible con POSIX.
Referencias
- <comando>: Valor a reemplazar va entre «<» y «>».
- [opción]: Valor opcional va entre «[» y «]».
- –o: Bandera de opción de un solo caracter va después de «-«.
- —opcion: Bandera de opción de palabra completa va después de «–«.
- ~$: prompt de usuario común.
- ~#: prompt de usuario root o superusuario.
- «;«: marca el final de un comando. Útil para incluir múltiples comandos en una misma línea.
- «|»: «Pipe»; redirige la salida del comando a la izquierda como entrada del comando a derecha.
- «||»: «OR»; Si el comando a izquierda falla, ejecutar el comando a a derecha.
- «&»: «Background»; ejecuta comando de fondo.
- «&&»: «AND»; si el comando a izquierda es exitoso, ejecutar comando a derecha.
- «..» se refiere al directorio inmediato superior.
- «.» se refiere al directorio actual.
- «~» se refiere al directorio en home del usuario actual.
- Permisos: r -> lectura (4); w -> escritura (2); x -> ejecución (1).
- Niveles de permisos en DAC: u -> usuario; g -> grupo; o -> otros.
- Ruta absoluta: ruta en relación al directorio raíz.
- Ruta relativa: rutan en relación al directorio actual.
Tareas básicas
- Ver páginas manuales disponibles para comando:
~$ man <comando>
- Apagar CPU:
~$ shutdown 0
- Reiniciar CPU:
~$ reboot
- Ver historial de comandos ejecutados
~$ history
~$ cat ~/.bash_history
- Imprimir información en pantalla:
~$ echo "Hola mundo!"
- Repetir comando automáticamente:
~$ watch -bcd -n <intervalo> <comando>
Manipulación de permisos y usuarios
- Agregar usuario:
~# adduser <usuario>
~# useradd <usuario>
- Eliminar usuario:
~# userdel <usuario>
- Substituir usuario actual con usuario:
~$ su - <usuario>
- Ejecutar comando como super usuario:
~$ sudo <comando>
- Cambiar permisos de archivo o directorio:
~$ chmod 644 <archivo>
~$ chmod 755 <directorio>
~$ chmod -R u+rwx,g-w,o+x <directorio>
- Cambiar propietario de archivo o directorio:
~$ chown <usuario> <archivo>
~$ chown -R <usuario> <directorio>
- Cambiar grupo de archivo o directorio:
~$ chgrp <usuario> <archivo>
~$ chgrp -R <usuario> <directorio>
- Cambiar clave de usuario:
~$ passwd <usuario>
Rutas de interés:
- /etc/groups
- /etc/passwd
- /etc/shadow
- /etc/profile
- /home/<usuario>/.bashrc
Navegación
- Mostrar ubicación actual:
~$ pwd
- Cambiar de directorio:
~$ cd <directorio>
- Subir un directorio:
~$ cd ..
- Ir a carpeta de usuario actual:
~$ cd
~$ cd ~/
- Listar contenido de directorio:
~$ ls <directorio>
- Listar contenido de directorio (detalle):
~$ ls -l <directorio>
- Listar contenido de directorio (oculto):
~$ ls -a <directorio>
Jerarquía del sistema de archivos
DIRECTORIO | CONTENIDO |
/ | Raíz del sistema de archivos. |
/bin | Programas comunes compartidos por el sistema, el administrador y los usuarios comunes. |
/boot | Archivos de arranque, kernel (vmlinuz) y datos del bootloader (GRUB). |
/dev | Archivos con propiedades especiales que contienen referencias a todos los perifericos de hardware del CPU. |
/etc | Archivos de configuración más importantes. |
/home | Directorios de usuarios comunes. |
/lib | Archivos de librerías requeridas por programas. |
/lost+found | Archivos guardados durante fallas. |
/mnt | Punto de montaje estándar para sistemas de archivos externos (Ej: CD-ROM, cámara digital, etc). |
/opt | Típicamente utilizar para software adicional y/o de terceros. |
/proc | Sistema de archivos virtual que contiene información sobre el sistema. |
/sbin | Programas comunes compartidos por el sistema y el administrador. |
/tmp | Archivos temporales. No persiste entre reinicios. |
/usr | «Recursos universales compartidos» (Universal Shared Resources). Programas, librerías y documentación para programas de usuario. |
/var | Archivos de variables y temporales creados por los usuarios. Ej: logs, mails, almacenamiento temporal, etc. |
Manipulación de archivos y directorios
- Concatenar contenido de archivos:
~$ cat <archivo> [<archivo2> <archivo3> ... <archivoN>]
- Ver contenido de archivo:
~$ less <archivo>
- Ver encabezado del archivo:
~$ head <archivo>
- Ver cola de archivo:
~$ tail <archivo>
- Filtrar información:
~$ cat <archivo> | grep <patron>
- Buscar archivos o directorios:
~$ locate <patron>
~$ find . -type f -iname "*ejemplo.txt"
- Utilizar editor de texto en CLI:
* vim
~$ vim <archivo>
* nano
~$ nano <archivo>
* gedit
~$ gedit <archivo>
- Crear o actualizar archivo:
~$ touch <archivo>
- Crear directorio:
~$ mkdir <directorio>
- Crear ruta de directorios:
~$ mkdir <ruta>
- Mover directorio o archivo:
~$ mv <origen> <destino>
- Copiar archivo:
~$ cp <origen> <destino>
- Copiar directorio:
~$ cp -r <origen> <destino>
- Remover archivo:
~$ rm <archivo>
- Remover directorio vacío:
~$ rmdir <directorio>
- Remover directorio:
~$ rm -r <directorio>
- Comparar contenido de archivos o directorios:
~$ diff -r <directorio1> <directorio2>
~$ diff <archivo1> <archivo2>
- Sincronizar contenido de directorio:
~$ rsync -avzP <origen>/ <destino>
- Sincronizar directorio:
~$ rsync -avzP <origen> <destino>
Información de sistema
- Mostrar memoria disponible:
~$ free -h
- Mostrar particiones:
~# fdisk -l
- Mostrar espacio utilizado
~$ df -h
- Mostrar peso de archivos/directorios
~$ du -sh
- Listar dispositivos de almacenamiento:
~$ lsblk
- Listar información de procesadores:
~$ lscpu
- Listar dispositivos USB:
~$ lscpu
- Listar dispositivos PCI:
~$ lspci
- Listar archivos abiertos:
~$ lsof
- Ver fecha y hora del servidor:
~$ date
- Mostrar información de sistema:
* host de red:
~$ uname -n
* versión de kernel:
~$ uname -r
* arquitectura:
~$ uname -m
* toda la información del sistema:
~$ uname -a
- Ver información de hardware:
~# dmidecode
* memoria:
~# dmidecode --type memory
~# dmidecode -t processor
~# dmidecode -t bios
~# dmidecode -t system
Rutas de interés:
- /proc
- /var/log
Información de red
- Mostrar información de interfaces de red:
~$ ip a
~$ ifconfig a
~$ nmcli
- Mostar información de conexiones:
~$ netstat -ntlupda
~$ ss -atundpsS
- Ping:
~$ ping <ip_o_dominio>
* Acceso a la red:
~$ ping <puerta_enlace>
* Acceso a Internet:
~$ ping duckduckgo.com
* Acceso de Internet (problemas con DNS):
~$ ping <ip_externa>
- Ver circuito establecido:
~$ mtr -n duckduckgo.com
Rutas de interés:
- /etc/network -> Debian
- /etc/sysconfig/network-scripts/ -> RHEL
- /etc/NetworkManager/system-connections -> Fedora (GUI)
Información de sesiones
- Ver sesiones de usuarios logueados:
~$ who
- Ver sesiones y actividades de usuarios logueados:
~$ w
- Ver información de procesos:
~$ top
~$ htop
~$ glances
~$ ps aux
- Matar proceso:
~$ kill <pid>
Información de servicios
- Ver estado de servicio
~# systemctl status <servicio>
- Habilitar servicio al iniciar el sistema
~# systemctl enable <servicio>
- Iniciar servicio
~# systemctl start <servicio>
- Reiniciar servicio
~# systemctl restart <servicio>
Detener servicio
~# systemctl stop <servicio>
Rutas de interés:
- /lib/systemd/system -> SystemD
- /etc/systemd/system/ -> SystemD
- /etc/init.d -> INIT
EJEMPLOS
Configuración de interfaz de red con IP estática
En Debian y derivados (incluyendo Ubuntu), la configuración para cada interfaz de red se guarda en el archivo /etc/network/interfaces. Antes de realizar cualquier modificación, es recomendable realizar una copia de respaldo del fichero de configuración.
cp /etc/network/interfaces /etc/network/interfacesBAK
Una vez respaldado, podemos proceder a modificar el fichero con alguno de los editores de texto disponibles:
nano /etc/network/interfaces
# Interface loopback, un dispositivo que el kernel utiliza
# para comunicacion de redes de manera interna ("consigo mismo")
# La primera interface disponible recibe la IP 127.0.0.1
auto lo
iface lo inet loopback
# Interface ethernet servida por el modelo de gestión de red "static"
# (configuracion de red estatica)
auto eth0
# Le indicamos que vamos a configurar una ip de forma estatica sobre la interface de red eth0
iface eth0 inet static
# IP estatica que le asignamos, esto puede variar dependiendo de las IPs de nuestra red
address 192.168.0.10
# La mascara en este caso utilizamos una máscara de red de 24 bits
netmask 255.255.255.0
# Gateway o puerta de enlace
gateway 192.168.0.1
En algunos sistemas es posible que eth0 (nombre de la interfaz a nivel de sistema) sea difrente: enp1s0, wlp1s0 , etc. - Líneas "auto": sirven para especificar las interfaces físicas que se activarán cuando se ejecute el comando ifup -a. Este se ejecuta automáticamente en el arranque, por lo que se especifican las tarjetas de red que se activarán acutomáticamente en el inicio. Se pueden poner todas las instrucciones de este tipo que se requieran. Separandolas mediante espacios, se puede poner más de una tarjeta física en cada línea. - Líneas "iface": Sirve para definir nombres lógicos de interfaces de red, junto con su configuración particular. - Líneas #: sirven para especificar comentarios. Las líneas iface tienen la siguiente sintaxis: iface <config_name> <address_family> <method_name> <option1> <value1> <option2> <value2> <option3> <value3> donde <config_name> será un nombre lógico de interfaz de red, <address_family> normalmente contendrá el valor inet para especificar una configuración IPv4, pero también puede ser inet6 (IPv6). El valor de <method_name> indica el método de configuración de la interfaz y depende del valor de <address_family>, para el caso de la familia inet los métodos que se pueden utilizar son: loopback: usado solo para la interfaz lo (bucle local). static: usado para asignar una dirección ip fija. dhcp: usado para asignar una dirección dinámica. Las dos primeras líneas de /etc/network/interfaces deben ser: auto lo iface lo inet loopback Estas activan la interfaz "lo" (bucle local), utilizada para la comunicación entre procesos locales. Permite diagnosticar problemas de configuración en base a la conectividad y validez de los protocolos de comunicación locales. El método static se utiliza para asignar una ip fija a una interfaz de red. address 192.168.0.10 Establece la dirección IP. netmask 255.255.255.0 Establece la máscara de subred para la dirección IP. gateway 192.168.0.1 Establece la puerta de enlace. En un equipo sólo puede haber una puerta de enlace, o lo que es lo mismo, sólo puede haber una regla por defecto de enrutamiento. Esta opción se asociará a la línea iface cuya ip se corresponde con la ip de salida de la regla por defecto en la tabla de enrutamiento.
Comentarios recientes