Comandos Linux para sobrevivir en tu proyecto

A continuación, vamos a ir enumerando una serie de comandos Linux que considero de uso básico en cualquier proyecto en el que podamos caer en algún momento de nuestra vida laboral. No pretende ser una lista exhaustiva pero, en cualquier caso, espero que cubra las necesidades de la mayoría de nosotros. Eso sí, tened en cuenta que esto es sólo un punto de partida para, poco a poco, ir mejorando nuestro conocimiento en el futuro.

 

 

Comandos básicos


Vamos a echarle un vistazo, en primer lugar, a los comandos básicos que tenemos que conocer para manejarnos dentro de un entorno Linux.


* pwd    : Indica el directorio actual en el que nos encontramos. 

* history    : Muestra el historial de comandos que se han ejecutado en el shell.

* cd    : Para movernos a un directorio concreto.

* echo    : Imprimir texto en la consola.

* printf    : Imprimir texto en la consola.

  • printf "Soy %s y mi shell es %s\n" $USER $SHELL

* ls    : Lista el contenido de un directorio. Este comando dispone de muchas opciones diferentes. Las más comunes son las siguientes:

  • -l    Listado en formato largo
  • -t    Ordenación por fecha de modificación
  • -r    Mostrar archivos más recientes al final
  • -s    Mostrar tamaño de fichero (en kilobytes)
  • -h    Mostrar tamaño de fichero en formato humano (KB, MB, GB, etc...)
  • -a    Mostrar ficheros ocultos (aquellos que comienzan por un "punto")

Por ejemplo:

  • ls -ltr    Listado del directorio con ordenación inversa por fecha.
  • ls -lha    Listado del directorio incluyendo archivos ocultos

* env    : Visualizar las variables de entorno. Entre otras, se muestran los valores de las variables $SHELL, $USER, $PATH, $PWD, $LANG, $HOME, etc...

* set    : Establecer variable de entorno

* touch    : Crear un archivo vacío.

* mkdir    : Crear un directorio.

* rmdir    : Eliminar directorio (que se encuentre vacío)

* alias    : Permite crear un comando de usuario que internamente ejecute los comandos de sistema que se le indiquen. 

* whereis    : Buscar ubicación de los ficheros asociados al nombre indicado (fichero ejecutable, fichero fuente, manual, etc...).

* which    : Buscar localización de un fichero ejecutable.

* find    : Buscar archivos y directorios en el sistema.

* locate    : Con esta herramienta podemos buscar un fichero determinado dentro de la BBDD que se mantiene actualizada con el contenido existente en el sistema. Es más rápida que el comando find, pero esta BBDD no se actualiza automáticamente, sino que para ello debe ejecutarse el comando updatedb.

Esta herramienta debe instalarse mediante el paquete APT.

  • sudo apt-get install locate

* tree    : Esta herramienta nos permite visualizar el árbol de directorios del sistema.

Debe instalarse mediante APT:

  • sudo apt-get install tree

* hostname    : Ver el nombre de la máquina. 

* getip    : Obtiene la dirección IP del alias de la máquina.

  • getip maquina_linux

* df    : Ver espacio disponible en el sistema.

* free    : Ver estado de la memoria RAM del sistema.

* last    : Lista de los últimos usuarios que han iniciado sesión.

* uptime    : Información sobre estado activo de la máquina y cantidad de usuarios en línea.

* bdf    : Información sobre los Filesystem disponibles en el servidor, dónde están montados y los detalles sobre espacio en disco.

 

 

Gestión de ficheros

 

Vamos ahora a echarle un vistazo a los comandos más utilizados en Linux a la hora de trabajar con ficheros.


* cat    : Visualizar contenido de fichero.

* tac    : Visualizar contenido en sentido inverso.

* less    : Visualizar contenido del fichero página a página

* head    : Visualizar primeras líneas del fichero.

* tail        : Visualizar últimas líneas del fichero. Ejemplo:

  • tail -1000f traza.txt    Muestra los últimos 1.000 caracteres con refresco automático

* nl    : Numerar líneas

* uniq    : Visualizar sin mostrar líneas duplicadas.

* sort    : Ordenar las líneas del fichero.

* fmt    : Formatear texto.

* cp    : Copiar fichero.

  • cp prueba.txt /home/curso/Escritorio

* mv    : Mover o renombrar fichero. El archivo original se borra y se crea un nuevo archivo con contenido idéntico al original. Ejemplos de uso:

  • mv nombre_ori.txt nombre_des.txt    Renombra el fichero

* rm    : Borrar fichero. Ejemplos de uso:

  • rm fichero.txt    Borrar fichero
  • rm directorio/*    Borrar todos los ficheros del directorio

* grep    : Buscar patrón de texto en un fichero. Ejemplos de uso:

  • grep cadena fichero.txt    Busca patrón "cadena" en el fichero
  • grep -a cadena fichero.txt    Lista patrones "cadena" del fichero
  • grep -v cadena fichero.txt    Muestra líneas que no contienen el texto buscado.

* egrep    : Permite buscar expresiones regulares extendidas.

* fgrep    : Búsqueda de patrón sin interpretar las expresiones regulares del contenido del fichero.

* scp    : Herramienta que nos permite copiar un fichero a otra máquina distinta de la nuestra. Ejemplos de uso:

  • scp   -rpC   fichero.txt   usuario@10.160.190.50
  • scp   fichero.txt    usuario@10.160.190.50:/home/ubuntu

* ssh    : Permite acceso remoto a la máquina destino con el usuario indicado (usuario@direccionIp). La conexión se realiza mediante comunicación cifrada con el protocolo SSH (Secure Shell). El cliente realiza la petición y en el servidor el servicio SSH valida el acceso.

Ejemplo de uso:

  • ssh   curso@127.0.0.1    Acceso a la máquina "localhost" con el usuario "curso"
  • ssh   -p   2222    curso@127.0.0.1   Acceso a la máquina "localhost" a través del puerto 2222

* exit    : Cerrar sesión.

* ln -s    : Crear enlace simbólico hacia un fichero o directorio.

  • ln -s /home/curso/Escritorio/saludo/    /home/curso/link

* export EDITOR    : Seleccionar el editor por defecto de nuestro sistema Linux.

  • export EDITOR="nano"      Establece nano como editor por defecto

 

👉 También debemos tener en cuenta el significado de los directorios estándar de Linux. Algunos de los más importantes son los siguientes.

* Directorio Punto doble (..)    : Representa al directorio padre del directorio en el que nos encontramos.

* Directorio Punto simple (.)    : Representa al directorio actual. 

  • ./script.run    Ejecuta el fichero "script.run" existente en el directorio actual

* Directorio ~    : Se trata del directorio home del usuario actual.

 

 

Compresión de ficheros

 

Vamos ahora a repasar algunos comandos que nos vendrán bien a la hora de comprimir y descomprimir ficheros en nuestro sistema.

* gzip    : Permite comprimir fichero, que quedará renombrado con extensión .gz. Las opciones disponibles principales para esta herramienta son las siguientes:

  • -q    Crear archivo (empaquetar)
  • -d    Extraer archivo (desempaquetar)

Ejemplos de uso:

  • gzip -q   fichero.gz   original.txt     Comprimir fichero
  • gzip -d   fichero.gz                          Descomprimir fichero

* zgrep    : Permite buscar el patrón indicado en un fichero empaquetado de tipo .gz

* zip    : Comprimir fichero con extensión .zip

* unzip    : Permite descomprimir un fichero de tipo .zip

* tar    : Permite comprimir un fichero, que quedará renombrado con extensión .tar. Las opciones disponibles principales para esta herramienta son las siguientes:

  • -c    Crear archivo (empaquetar)
  • -x    Extraer archivo (desempaquetar)
  • -f    Especificar nombre del fichero
  • -t    Mostrar contenido del .tar
  • -v    Mostrar progreso 
  • -z    Comprimir usando algoritmo gzip (algoritmo más refinado)
  • -j    Comprimir usando algoritmo bzip2 (algoritmo original)

Ejemplos de uso:

  • tar -cf   fichero.tar   original.txt     Comprimir fichero
  • tar -xf   fichero.tar                          Descomprimir fichero
  • tar -xf -                                           Descomprimir entrada estándar
  • tar -tf   fichero.tar                          Visualizar contenido

 


Gestión de permisos

 

Vamos ahora a echarle un vistazo a los comandos más utilizados en Linux a la hora de gestionar los permisos de ficheros. Recordemos que en Linux existen 3 tipos de permisos: lectura (r), escritura (w) y ejecución (x).


* chown    : Este comando nos permite cambiar el propietario de un archivo.

* chgrp    : Cambiar grupo de un archivo.

* chmod    : Cambiar permisos de un archivo o de un directorio. Este comando se puede ejecutar con estos 4 modos, según la estructura de permisos a la que queramos afectar:

  • u (user): permisos de propietario
  • g (group): permisos de grupo
  • o (other): permisos de otros usuarios
  • a (all): permisos para todo tipo de usuario 

Adicionalmente, con el atributo -v podremos visualizar el cambio realizado.

Ejemplos de uso:

  • chmod o=rwx fichero    Permisos de Otros Usuarios: rwx (lectura + escritura + ejecución)
  • chmod o=rx fichero    Permisos de Otros Usuarios: r-x (lectura + ejecución)
  • chmod u=rwx,g=rwx,o=rx fichero
  • chmod -v   o=rwx    fichero   Muestra un comentario con el cambio realizado

* chmod -R    : Cambiar permisos de un directorio y de todos sus ficheros.

* sudo bash    : Permite entrar en el usuario root del sistema. Para salir del shell del root del sistema, podemos ejecutar el comando exit.

* sudo    : Permite, con los permisos del superusuario root, realizar la ejecución puntual de un proceso ("sudo" significa Super User Do). Los permisos para acceder al comando sudo se encuentran en el fichero etc/sudoers

* visudo    : Editar el fichero sudoers (permisos de acceso al comando sudo).

* passwd    :  Cambiar contraseña del usuario indicado como argumento.

* su    : Cambiar del usuario actual al usuario root del sistema, abriendo una nueva Shell. Para salir de la shell, habrá que ejecutar el comando exit.

* su -    : Cambiar al usuario root del sistema, manteniendo abierta la Shell del usuario actual. 

* su - user    : Cambiar del usuario actual al usuario "user" indicado, especificando su password de acceso correspondiente. En este caso, se mantiene abierta la Shell del usuario inicial. 

* sesu - user: Utilidad que nos permite actuar temporalmente como si fuésemos el usuario "user" indicado (sin necesidad de proporcionar la password de dicho usuario).




Gestión de procesos y jobs

 

Ahora toca echarle un vistazo a los comandos Linux de los que disponemos para trabajar con los procesos y jobs del sistema. Recordemos que el pid es el identificador del proceso.


* ps    : Monitorización de procesos (foto fija).

* pstree    : Muestra los procesos en formato de árbol.

* top    : Monitorización interactiva de proceso (evolución dinámica).

Esta herramienta debe instalarse mediante el paquete APT.

  • sudo apt-get install htop

* htop    : Herramienta para monitorizar procesos. 

* sar: Herramienta de Supervisión de Actividades del Sistema. Muestra estadísticas detalladas del sistema operativo.

  • sar -u 1 10    Mostrar estadísticas de uso en 10 ocasiones con intervalos de 1 segundo

* pidof    : Obtener el pid de un proceso determinado.

* pgrep    : Buscar pid de proceso de un ejecutable en función de determinados criterios.

* kill    : Finalizar proceso a partir del pid del mismo. Hay dos modos principales para ejecutar este comando.

  • kill -SIGTERM    Primero finaliza procesos hijos y luego el proceso padre
  • kill -SIGKILL    Fuerza la finalización del pid indicado

* killall    : Finalizar proceso a partir del nombre del mismo. El comando finalizará todos los pid asociados al nombre indicado.

* pkill    : Finalizar procesos con un criterio determinado.

* jobs    : Mostrar los jobs actualmente activos en nuestro shell actual.

* fg    : Ejecutar un job en primer plano (foreground).

* bg    : Ejecutar un job en segundo plano (background).




Gestión de paquetes

 

Aunque este apartado quizás ya no es tan importante como los demás, vamos a echar un vistazo a los comandos de los que disponemos para instalar paquetes en nuestro sistema Linux. Esto se realiza mediante la herramienta APT (Advance Packaging Tool).

 

* apt-cache search    : Buscar paquete en los repositorios.

* apt-cache showpkg    : Mostrar las dependencias del paquete.

* apt update    : Actualizar cabeceras de repositorios.

* apt upgrade    : Actualización segura de los paquetes del sistema. 

  • sudo apt upgrade

* apt dist-upgrade    : Actualización total.

* apt install    : Instalar paquete. Por ejemplo:

  •     sudo apt install alien

* apt remove    : Borrar paquete.

* apt clean    : Eliminar instaladores de las herramientas ya instaladas.

 

🚨 Hay que puntualizar que, en versiones antiguas de algunas distribuciones Linux, tendremos que usar el comando apt-get en vez del comando apt.



 

Administrador Cron

 

Echemos un vistazo ahora a los comandos de los que disponemos para tratar con los procesos disparados por el servicio Cron. Tengamos en cuenta que cada usuario dispondrá de su propio fichero crontab en el que se indicarán tanto los procesos administrados como los intervalos periódicos de ejecución. El formato Cron será el siguiente:

[minuto hora dia mes semana usuario comando]

Por ejemplo, podríamos tener lo siguiente:

* * * * *    ls /home/curso/*.tmp | xargs rm -r

Los cinco asteriscos (*) nos indican que el comando ls se ejecutará todos los minutos, todas las horas, todos los días, todos los meses y todos los días de la semana.

 

* crontab - e    : Editar crontab

* crontab -l    : Visualizar crontab

* crontab -r    : Eliminar tarea del crontab




Redirecciones y tuberías

 

Vamos a ver ahora cuáles son los comandos que podemos emplear para trabajar con la salida estándar de nuestro sistema Linux.


* Operador >    : Guardar el resultado de la salida estándar al contenido de un fichero. Por ejemplo, podríamos poner:

  • ls > salida.txt    Guardar el listado de salida en el fichero "salida.txt"

* Operador >>    : Añadir la salida estándar al contenido de un fichero ya existente. Por ejemplo, la ejecución sería:

  • ls >> salida.txt    Añadir el listado de salida al fichero "salida.txt"

* Operador |    : Permite enviar la salida estándar de un comando hacia la entrada estándar de otro comando. Por ejemplo:

  • cat fichero | grep 'a'    Pasa el contenido de "fichero" al comando grep para buscar la cadena "a"




Conectividad de Red

 

Ahora vamos a ver algunos comandos que nos pueden servir para verificar la conectividad de todos los dispositivos de nuestra red.


* ip addr    : Nos muestra nuestra dirección IP.

* ip route show    : Muestra la ruta de nuestra dirección IP.

* route    : Muestra información similar al comando "ip route show", pero en formato IPv4.

* ifconfig    : Muestra información similar al comando "ip addr", pero en formato IPv4.

* netstat -i    : Muestra todas las interfaces de nuestra red y sus estadísticas de uso.

* netstat -l    : Muestra un listado con todos los puertos abiertos y en estado de escucha.

* ss    : Muestra información acerca de las interfaces de red. 

* host    : Al indicarle una dirección web, nos indica la dirección IP equivalente al nombre DNS introducido.

* ping    : Al indicarle una dirección IP, no permite saber si ese destino está operativo y es capaz de devolvernos información.

 

Pues nada, en principio con todo lo comentando en el post ya tendríamos las herramientas básicas necesarias para defendernos en el entorno Linux de nuestra máquina. Aunque no vamos a ser el oráculo del proyecto, al menos os servirá para no ir preguntando cualquier paso que tengamos que dar...

Saludos.


Comentarios

Entradas populares de este blog

Componentes y Ventanas de Java Swing

Creación de Webservice SOAP básico

Eliminar duplicados de una Lista en Java