Skip to content

Instantly share code, notes, and snippets.

@aduartem
Last active June 15, 2022 15:32
Show Gist options
  • Save aduartem/b14de523e69c3a931534 to your computer and use it in GitHub Desktop.
Save aduartem/b14de523e69c3a931534 to your computer and use it in GitHub Desktop.
Ubuntu

Ubuntu

Métodos abreviados de teclado

1.- Ctrl+Alt+T para abrir la Terminal

2.- Ctrl+Alt+F1 (F1, F2, F3, F4, F5 ó F6) para pasar desde el modo gráfico al modo texto (intérprete de comandos)

3.- Ctrl+Alt+F7 o Alt+F7 para pasar desde el modo texto al modo gráfico.

4.- Ctrl+R desde la terminal o modo texto permite escribir parte del comando que recordamos, según vamos escribiendo nos van saliendo comandos hasta encontrar lo que necesitamos.

Uso general

Loguear al usuario con permisos temporales de administrador:

$ sudo -i

Mostrar la arquitectura que soporta el kernel actual instalado (32 o 64 bit):

$ uname -a

Nota: Si en el resultado aparece “x86_64 GNU/Linux” eso indica que estás corriendo un kernel Linux de 64 bit. En cambio, si ves “i386/i486/i586/i686”, es un kernel de 32 bit.

Para conocer la versión del sistema operativo basado en Linux:

$ lsb_release -a

Imprimir el nombre, versión y otros detalles de la máquina:

$ uname -r && lsb_release -a && cat /proc/version

Disco Duro

$ df -lh

Memoria RAM:

Para ver el total de memoria RAM, la memoria usada y la disponible:

$ free -m

Actualizar Ubuntu a nuevo release

$ sudo do-release-upgrade

Manuales de comandos

El comando man nos ofrece el manual de cualquier comando.

Sintaxis:

man comando

Ejemplo:

$ man cp

Para salir presionar la tecla q

Apagar/Reiniciar Ubuntu

Apagar:

$ sudo shutdown -h now

Reiniciar:

$ sudo shutdown -r now

Listar los puertos que están ocupados

$ sudo netstat -putan | grep LISTEN

Procesos

Listar los procesos

El comando ps permite mostrar los procesos que se encuentran activos.

Listar los procesos de todos los usuarios:

$ ps -a

Listar todos los procesos activos con todos los detalles:

$ ps -AF

Otras formas de listarlos:

$ ps -AL
$ ps -fea

Como saber que puerto ocupa mi proceso

Ejecutar el siguiente comando y revisar el PID del proceso que quiero saber el puerto que ocupa:

$ ps aux | grep node

El PID se encuentra en la segunda columna:

andres    2823  0.0  0.6 909404 49964 ?        Sl   11:47   0:02 /usr/local/bin/node /opt/PhpStorm-171.4694.2/plugins/JavaScriptLanguage/jsLanguageServicesImpl/js-language-service.js -id=1500565653390
andres    3332  0.0  0.7 1211300 59744 ?       Ssl  11:49   0:03 node /tmp/deploy/quickpay-api-authentication-service/app/bin/www
andres    3360  0.0  0.6 945556 53116 ?        Ssl  11:49   0:03 node /tmp/deploy/quickpay-api-security-service/app/bin/www
andres    3413  0.0  0.6 1203560 49904 ?       Ssl  11:49   0:04 node /tmp/deploy/quickpay-api-thirdparty-service/app/bin/www
andres    3807  0.0  0.5 906268 47956 ?        Sl   11:49   0:01 /usr/local/bin/node /opt/PhpStorm-171.4694.2/plugins/JavaScriptLanguage/jsLanguageServicesImpl/js-language-service.js -id=1500565798546
andres    5598  0.0  0.5 1200880 47280 ?       Sl   11:52   0:01 /usr/local/bin/node /home/andres/Proyectos/quickpay-api-financial-service/app/bin/www
andres    6292  0.0  0.8 1254700 68300 ?       Sl   11:54   0:03 /usr/local/bin/node /home/andres/Proyectos/quickpay-api-controller/app/bin/www
andres    6926  0.7  3.6 1196840 298352 ?      Sl   11:59   0:47 /usr/local/bin/node /opt/PhpStorm-171.4694.2/plugins/JavaScriptLanguage/jsLanguageServicesImpl/js-language-service.js -id=1500566386488
andres    6956  0.1  0.9 920392 79064 ?        Sl   11:59   0:06 /usr/local/bin/node /opt/PhpStorm-171.4694.2/plugins/JavaScriptLanguage/jsLanguageServicesImpl/js-language-service.js -id=1500566393875
andres    7326  0.0  0.4 888572 38468 pts/1    Sl+  12:05   0:00 node /usr/local/bin/stubby -d stubs/integration-stubs.yaml -s 8882 -t 8443 -a 8010
andres    7327  0.0  0.4 888572 37252 pts/1    Sl+  12:05   0:00 node /usr/local/bin/stubby -d stubs/integration-stubs.yaml -s 8883 -t 8444 -a 8011
andres    7328  0.0  0.4 889964 38824 pts/1    Sl+  12:05   0:00 node /usr/local/bin/stubby -d stubs/integration-stubs.yaml -s 8884 -t 8445 -a 8012
andres    7329  0.0  0.4 889596 37364 pts/1    Sl+  12:05   0:00 node /usr/local/bin/stubby -d stubs/integration-stubs.yaml -s 8885 -t 8446 -a 8013
andres    7330  0.0  0.4 889840 38844 pts/1    Sl+  12:05   0:00 node /usr/local/bin/stubby -d stubs/integration-stubs.yaml -s 8886 -t 8447 -a 8014
andres   10669  0.0  0.0  15444  1024 pts/5    S+   13:45   0:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn node

Luego ejecutar y buscar el PID del proceso para finalmente encontrar el puerto:

$ sudo netstat -putan | grep LISTEN

El PID es el numero de la última columna y el puerto se encuentra en la tercera columna:

tcp        0      0 0.0.0.0:8883            0.0.0.0:*               LISTEN      7327/node       
tcp        0      0 127.0.0.1:4371          0.0.0.0:*               LISTEN      2322/spotify    
tcp        0      0 0.0.0.0:8884            0.0.0.0:*               LISTEN      7328/node       
tcp        0      0 0.0.0.0:8885            0.0.0.0:*               LISTEN      7329/node       
tcp        0      0 0.0.0.0:57621           0.0.0.0:*               LISTEN      2322/spotify    
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1388/dnsmasq    
tcp        0      0 0.0.0.0:8886            0.0.0.0:*               LISTEN      7330/node       
tcp        0      0 0.0.0.0:8443            0.0.0.0:*               LISTEN      7326/node       
tcp        0      0 0.0.0.0:8444            0.0.0.0:*               LISTEN      7327/node       
tcp        0      0 0.0.0.0:8445            0.0.0.0:*               LISTEN      7328/node       
tcp        0      0 127.0.0.1:4381          0.0.0.0:*               LISTEN      2322/spotify    
tcp        0      0 0.0.0.0:8446            0.0.0.0:*               LISTEN      7329/node       
tcp        0      0 127.0.0.1:6942          0.0.0.0:*               LISTEN      2626/java       
tcp        0      0 0.0.0.0:42175           0.0.0.0:*               LISTEN      2322/spotify    
tcp        0      0 0.0.0.0:8447            0.0.0.0:*               LISTEN      7330/node       
tcp        0      0 127.0.0.1:4200          0.0.0.0:*               LISTEN      7331/cli        
tcp        0      0 127.0.0.1:4201          0.0.0.0:*               LISTEN      6510/cli        
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      6148/mongod     
tcp        0      0 0.0.0.0:8010            0.0.0.0:*               LISTEN      7326/node       
tcp        0      0 0.0.0.0:8011            0.0.0.0:*               LISTEN      7327/node       
tcp        0      0 0.0.0.0:8012            0.0.0.0:*               LISTEN      7328/node       
tcp        0      0 0.0.0.0:8013            0.0.0.0:*               LISTEN      7329/node       
tcp        0      0 0.0.0.0:8014            0.0.0.0:*               LISTEN      7330/node       
tcp        0      0 127.0.0.1:63342         0.0.0.0:*               LISTEN      2626/java       
tcp        0      0 0.0.0.0:8882            0.0.0.0:*               LISTEN      7326/node       
tcp6       0      0 :::3000                 :::*                    LISTEN      6292/node       
tcp6       0      0 :::3001                 :::*                    LISTEN      3360/www        
tcp6       0      0 :::3002                 :::*                    LISTEN      3332/www        
tcp6       0      0 :::3003                 :::*                    LISTEN      3413/www        
tcp6       0      0 :::3004                 :::*                    LISTEN      5598/node 

Finalizar un proceso

Para finalizar un proceso es necesario conocer el número identificador del proceso (PID). Para conocer el número basta con listar los procesos.

Una ver conocido el PID basta con ejecutar en un terminal:

$ sudo kill [PID]

Es conveniente verificar que el proceso ha finalizado y ya no se encuentra en ejecución.

En ocasiones puede suceder que algún proceso no finalice luego de haber ejecutar el comando kill. En este caso se debe forzar la finalización del proceso:

$ sudo kill -9 [PID]

Crear un link simbólico

Sintaxis:

ln -s archivo ruta_destino

Ejemplos:

$ ln -s ~/dev/php/proyecto ~
$ sudo ln -s ~/dev/php/proyecto /var/www/html/

Comandos relacionados con archivos y directorios

ls (list: listar)

Muestra el contenido de la carpeta que le indiquemos.

Sintaxis:

ls [opciones] [ruta]

Si queremos que nos muestre el contenido de la carpeta "/opt":

$ ls /opt

Si no ponemos nada interpretará que debe listar el contenido de la carpeta donde estamos actualmente:

$ ls

Para mostrar todos los archivos y carpetas, incluyendo los ocultos:

$ ls -a

Para mostrar los archivos y carpetas. Además muestra información como permisos, usuarios y grupo al que pertenece, el tamaño del archivo, fecha y hora de creación y nombre.

$ ls -l

Para mostrar los archivos y carpetas, incluyendo los ocultos y mostrar información como permisos, usuarios y grupo al que pertenece, el tamaño del archivo, fecha y hora de creación y nombre.

$ ls -la

cd (change directory: cambiar directorio)

El comando cd nos permite cambiar de directorio. Si abrimos la terminal por defecto comenzamos en el directorio de mi usuario. Supongamos que el nombre de mi usuario es "andres" (sin las comillas), comenzaremos en el directorio:

/home/andres$

Si quisieramos cambiar al subdirectorio Descargas, deberíamos usar la orden:

/home/andres$ cd Descargas
/home/andres/Descargas$

Para volver al directorio padre de este, usamos la orden:

/home/andres/Descargas$ cd ..
/home/andres$

De igual forma, existe en la entrada "." la cual se refiere a si mismo. Así que el siguiente comando nos deja donde estamos:

/home/andres$ cd .
/home/andres$

Si estamos en el directorio raiz y quisieramos cambiar al directorio del usuario, entonces basta con ingresar el siguiente comando:

/$ cd ~
/home/andres$

En resumen:

".." se refiere a directorio padre

"." se refiere a si mismo

"~" se refiere al directorio del usuario (/home/usuario)

Comandos apt-get

Actualizar el listado de paquetes disponibles:

$ sudo apt-get update

Chequear resultado de apt-get update:

$ sudo apt-get check

Instalar un programa:

$ sudo apt-get install paquete

Desinstalar un programa:

$ sudo apt-get remove paquete

Desinstalar un programa y eliminar los archivos de configuración:

$ sudo apt-get remove --purge paquete

Reinstalar un programa:

$ sudo apt-get -reinstall install paquete

Actualizar sólo los paquetes ya instalados que no necesitan, como dependencia, la instalación o desinstalación de otros paquetes:

$ sudo apt-get upgrade

Actualizar todos los paquetes del sistema, instalando o desinstalando los paquetes que sean necesarios para resolver las dependencias que pueda generar la actualización de algún paquete:

$ sudo apt-get dist-upgrade

Resolver problemas con dependencias y paquetes rotos:

$ sudo apt-get -f install

Luego de resolver problemas con dependencias y paquetes rotos puede ser necesario reconfigurar dpkg utilizando:

$ sudo dpkg --configure -a

Para mantener el sistema limpio de bibliotecas que ya no se usan:

$ sudo apt-get autoremove

Para limpiar los paquetes viejos que ya no se usan:

$ sudo apt-get autoclean

Para limpiar los paquetes descargados e instalados:

$ sudo apt-get clean

grep

"Usualmente, grep toma una expresión regular de la línea de comandos, lee la entrada estándar o una lista de archivos, e imprime las líneas que contengan coincidencias para la expresión regular." Wikipedia.

Ejemplo:

$ sudo apt-cache search php | grep mail

locate

"locate es un comando del paquete findutils de GNU que provee una fácil y rápida manera de buscar archivos en el sistema completo basado en patrones de nombres.". Wikipedia

$ locate nombre_archivo

Crontab

Listar las tareas programadas:

$ crontab -l

Editar crontab:

$ crontab -e

Tail

Mostrar las "n" últimas líneas de un archivo de texto.

Sintaxis:

$ tail -opciones archivo

Ejemplo:

$ tail -f /var/log/apache2/*.log
$ tail -f --lines 10 /var/log/apache2/error.log

Archivos tar

Empaquetar:

$ tar -cvf salida.tar dir/arch1 dir/arch2 dir/archN

Desempaquetar:

$ tar -xvf paquete.tar

Comprimir con gzip (.tar.gz):

$ tar -czvf salida.tar.gz carpeta/a/comprimir

Descomprimir .tar.gz:

$ tar -xzvf archivo.tar.gz

ssh

Cómo instalar un servidor SSH ubuntu

Para instalar el servidor ssh:

$ sudo apt-get install openssh-server

Revisar el estado del servicio del servidor ssh:

$ sudo systemctl status ssh

Si todo está ok, el servicio debería tener status active (running).

Para configurar el servidor editamos el archivo /etc/ssh/sshd_config

$ sudo vim /etc/ssh/sshd_config

Para reiniciar el servicio

$ sudo /etc/init.d/ssh restart

Autenticación con ssh usando llave pública

Importar llaves ssh

$ tar -xvf ~/Descargas/llaves.tar
$ cd ~/.ssh
$ mv ~/Descargas/llaves/id_rsa .
$ mv ~/Descargas/llaves/id_rsa.pub .
$ chmod 400 id_rsa id_rsa.pub

Generar llave pública ssh

$ ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/jperez/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/jperez/.ssh/id_rsa.
Your public key has been saved in /Users/jperez/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20...

En el servidor autorizar llave para acceso por ssh

Abrir el archivo authorized_keys

$ vim ~/.ssh/authorized_keys

y agregar la llave pública en una nueva línea, al final del archivo.

$ ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC87RpU... jperez@example.com

Crear regla en firewall para permitir entrante el puerto 22

Ubuntu ocupa por defecto el firewall. Para añadir esta regla ejecute el siguiente comando:

$ sudo ufw allow 22/tcp 

Para verificar que la regla fue creada correctamente:

$ sudo ufw status

Revisar que puertos están abiertos y que servicio está escuchandolo

$ sudo nmap [ip]

Ejemplo:

$ sudo nmap 192.168.0.11

output:

PORT        STATE        SERVICE
22/tcp      open         ssh
3306/tcp    open         mysql

Iniciar sesión en un servidor remoto

Sintaxis:

$ ssh -p puerto usuario@host

Ejemplo:

$ ssh -p 14225 sistemas@192.168.1.4

Sintaxis opcional:

$ ssh -l usuario -p puerto host

Ejemplo:

$ ssh -l sistemas -p 14225 192.168.1.4

SCP

Permite copiar archivos entre dos máquinas. Utiliza ssh para las transferencia de datos, por tanto ofrece la misma seguridad que el ssh. Utiliza ssh para iniciar sesión. Este comando reemplaza rcp y ftp.

Sintaxis:

$ scp -P puerto archivo usuario@host:/ruta_destino

Ejemplo:

$ scp -P 14227 dump.tar sistemas@192.168.1.4:/home/andres/Descargas/dump

$ scp -P 14227 /home/cmarquez/dev/php/dump.tar sistemas@192.168.1.4:/home/andres/Descargas/dump

Historial de comandos en la terminal

flecha arriba o flecha abajo para ver los comandos más recientes

Para ver todo el historial:

$ history

Para ver los últimos 20 comandos ejecutamos:

$ history 20

Para seleccionar un comando anterior ejecutamos:

$ !5

Donde 5 corresponde al número de línea de la primera columna.

Para limpiar el historial completo ejecutamos:

$ history -c

Conexiones de red

Mostrar direcciones IP de las tarjetas de red ethernet:

$ ifconfig

Mostrar direcciones IP de las tarjetas de red inalámbricas:

$ iwconfig

Listar dispositivos de red ethernet PCI:

$ lspci | grep -i ethernet

Listar dispositivos de red inalámbricos PCI:

$ lspci | grep -i network

Listar dispositivos de red ethernet USB:

$ lsusb | grep -i ethernet

Listar dispositivos de red inalámbricos USB:

$ lsusb | grep -i network

Mostrar módulos inalámbricos cargados en el sistema:

$ lsmod | grep iwl

Archivo de configuración para resolver DNS es /etc/resolv.conf

Ejemplo Google IPv4 nameservers: nameserver 8.8.8.8 nameserver 8.8.4.4

Tarjetas de video

Listar tarjetas de vídeo:

$ lspci

Mostrar resolución y frecuencia en uso:

$ lspci | grep -i vga

Mostrar resoluciones y frecuencias soportadas:

$ xrandr | grep '*'
$ xrandr

Montar una partición

Paso 1: Conocer la denominación de la partición que queremos mostrar:

$ sudo fdisk -l

En este caso la denominación de la unidad es /dev/sda1

Paso 2: Conocer el punto de montaje y tipo de unidad que vamos a montar:

$ sudo blkid /dev/sda1

Otra forma de encontrar el punto de montaje es:

$ ls -l /dev/disk/by-uuid/

Paso 3. Crear la carpeta donde se montará nuestra partición

$ sudo mkdir /media/DATOS

Paso 4. Configurar que cada vez que arranquemos el sistema se monte la unidad

$ sudo vim /etc/fstab

Montar unidad NTFS

Una vez abierto el archivo si queremos montar nuestra unidad del tipo NTFS debemos añadir la siguiente linea:

UUID=XXXXXXXXXXXXX /media/carpeta de montaje ntfs-3g default_permissions,uid=1000 0 0

Por lo tanto en nuestro caso seria:

UUID=XXXXXXXXXXXXX /media/DATOS ntfs-3g default_permissions,uid=1000 0 0

Montar unidad FAT

Para montar una unidad FAT usar:

UUID=XXXXXXXXXXXX /media/carpeta de montaje vfat rw,uid=1000,gid=1000 0 0

Montar unidad ext4

Para montar una unidad EXT4 usar:

UUID=a6565255-095c-4b6d-b73a-86062e02fb37 /media/carpeta de montaje ext4 errors=remount-ro 0 1

Cambiar clave de un usuario

Si tenemos super usuario podemos cambiar la clave de cualquier usuario con el siguiente comando:

$ sudo passwd cecilia

Luego ingresamos la nueva clave, y finalmente la confirmamos.

Cambiar la hora

$ sudo date --set 14:25

Como saber IP pública de la máquina

$ curl ifconfig.io

Instalar paquetes .deb

$ sudo dpkg -i --force-depends package_name.deb

En caso que "dpkg" indique que faltan dependencias, completa la instalación ejecutando el siguiente comando:

$ sudo apt-get install -f

Reiniciar servicio de red network-manager

$ sudo service network-manager restart

Instalar cliente SMB

SmbClient es un cliente SMB de Samba. Para instalarlo ejecutar lo siguiente:

$ sudo apt-get install smbclient

Colocar el panel en la parte inferior de la pantalla (Ubuntu 16.04)

$ gsettings set com.canonical.Unity.Launcher launcher-position Bottom

Para restaurarlo cambiar Bottom por Left:

$ gsettings set com.canonical.Unity.Launcher launcher-position Left

Firewall UFW

Activar Firewall

Primero que todo podemos comprobar si UFW está activo o no con sudo ufw status:

$ sudo ufw status

Si responde lo siguiente

Status: inactive

Podemos activarlo con ufw enable:

$ sudo ufw enable

Ahora si volvemos a verificar su estado con sudo ufw status nos debería responder Status: active

Para establecer una configuración por defacto

$ sudo ufw default deny

Luego reiniciamos con:

$ sudo ufw disable
$ sudo ufw enable

Abrir y cerrar puertos

sudo ufw allow <número de puerto/protocopo>

Ejemplo:

$ sudo ufw allow 22/tcp

También podemos abrir el puerto 22 sin específicar el protocolo:

$ sudo ufw allow 22

Si después queremos cerrar un puerto podemos ocupar la opción deny

sudo ufw deny <número de puerto/protocopo>

Ejemplo:

$ sudo ufw deny 22
@trafico10
Copy link

gracias por tan valiosos comandos podria preguntar que modulos en apache son los que mas se prefieren a la hora de instalar un servidor lamp y que modulos eliminar saludos y gracias

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment