Ubuntu – Referencia de comandos útiles

Configuración del sistema

Consulta de la zona horaria actual del sistema

cat /etc/timezone

Modificar zona horaria del sistema

Bajo el directorio /usr/shar/zoneinfo se encuentran los descriptores de las zonas horarias. Para cambiar la zona horaria actual, se debe
modificar el descriptor al que apunta el link /etc/localtime utilizando un soft link. Por ejemplo, si se desea especificar la zona
Europe/Madrid se hará de la siguiente manera.

ln -sf /usr/share/zoneinfo/Europe/Madrid /etc/localtime

También es posible modificarla mediante el siguiente comando interactivo

dpkg-reconfigure tzdata

Modificar el layout de teclado

Sólo para la sesión actual

loadkeys <código ISO-639-1>

Ejemplo para cambio a layout español:

loadkeys es

Modificar el hostname

hostnamectl set-hostname <nuevo nombre>

Logs

Logs del boot actual
journalctl -b
Trazas de log de un servicio concreto
sudo journalctl -u <nombre servicio>

Sistema de ficheros

Búsqueda de una cadena dentro de ficheros

find . -type f -print | xargs grep "cadena a buscar"

Consulta de directorios top consumers de espacio en disco

# Top 15
du -xhS | sort -h -r | tail -n15

Donde:

  • -x: Permite ignorar directorios en sistemas de ficheros separados
  • -h: En el comando du muestra el resultado en un formato legible que puede ser ordenado por sort -h
  • -S: En el comando du permite excluir el tamaño de los subdirectorios en el computo para un directorio determinado

Comprobación de permisos sobre un fichero para un usuario especifico

sudo -u <usuario> test -[x|w|r] <path al fichero o directorio>
# Obtener el resultado del comando anterior
echo $?

Utilizando las opciones x, w o r se podrán probar los permisos de ejecución, escritura y lectura respectivamente. La ejecución del comando echo $? es necesaria porque el comando test no devuelve un valor visible. De esta manera
se muestra por pantalla el valor de retorno del comando, siendo 0 que el usuario tiene el permiso especificado y cualquier otro valor que no lo tiene.

Ejemplo:

sudo -u root test -r /etc/systemd/system 

El comando echo $? devolverá 0 indicando que root tiene acceso de lectura al directorio

Copia remota de ficheros

Copia mediante SCP. Funciona sobre SSH para copiar ficheros entre hosts:

scp [flags] <origen> <destino>

Donde:

  • flags: Es necesario indicar el flag -r para la copia de directorios
  • origen y destino: Indica el fichero / directorio origen y destino. Si se trata de una ubicación remota el formato deberá indicar credenciales, host y ruta en
    formato <credenciales>@<host>:<ruta>

Ejemplo de copia de host remoto a local:

scp username@hostname:/path/to/remote/file /path/to/local/file

Ejemplo de un copia de un directorio de host local a remoto:

scp -r /path/to/local/folder username@hostname:/path/to/remote/folder

Ejemplo de copia de entre hosts:

scp username1@hostname1:/path/to/remote1/file username2@hostname2/path/to/remote2/file

Servicios

Ejecución de servicios

Crear un nuevo descriptor de servicio

Crear un fichero en el directorio /etc/systemd/system/. El descriptor de un servicio básico tiene la siguiente estructura:

[Unit]
Description=<descripción del servicio>
After=<dependencias de otros servicios>

[Service]
Type=simple
User=<usuario con el que se ejecutará el servicio>
Group=<grupo con el que se ejecutará el servicio>
WorkingDirectory=<directorio en el que se ejecutará el servicio>
ExecStart=<comando de arranque del servicio>
Environment=<variables de entorno aplicadas al servicio>

[Install]
WantedBy=multi-user.target

Recargar configuración del servicio

sudo systemctl reload <nombre servicio>

Consultas sobre servicios

Estado del servicio

sudo systemctl status <nombre servicio>

Ejecución de comandos

Medir tiempo de ejecución de un comando

Bash time: Reporta el tiempo de ejecución de un comando

time <comando>

Por ejemplo, para medir el tiempo de ejecución de una aplicación Java:

time java -jar application.jar

/usr/bin/time: A parte del tiempo de ejecución del comando tambien puede reportar uso de memoria, IO o CPU. Los resultados se muestran al finalizar la ejecución.

/usr/bin/time [opciones] <comando>
# Tambien se puede ejecutar así
\time [opciones] <comando>

Las opciones se encuentran disponibles el la página de referencia: Man page

Ejemplos:

# Uso de memoria de una aplicación en KB
\time -f'%M' java -jar application.jar
\time --format='%M' java -jar application.jar

# Tiempo de ejecución de una aplicación (CPU-seconds) 
\time -f'%S' java -jar application.jar

# Tiempo de ejecución de una aplicación (Elapsed time) 
\time -f'%E' java -jar application.jar

Network

Comprobar resolución de hosts

Verifica si un hostname determinado se puede ser resuelto por el servicio DNS local o remoto, si se indica como segundo valor del comando

host <hostname> [servidor dns]

Por ejemplo:

host www.google.com 1.0.0.1