GNU/Linux LPIC-1 / 31 de Octubre de 2018: Grub, hardware, Journalctl, tiempo, SSH y Cups

Comandos de hardware: para conocer qué hardware tenemos en la máquina.
uname -r => nos dá la versión del Kernel de Linux que estamos usando (fichero vmlinuz)
Podríamos tener más de un kernel instalado.
Cuando se actualiza el kernel de Linux, se conservan los archivos de kernel antiguos por si nos falla algo con el kernel nuevo recién actualizado, poder arrancar con el kernel antiguo para poder ponerlo en marcha.

dmesg

demseg=>te informa de todo aquello que el  kernel ha ido haciendo, sobre todo en el arranca pero durante el funcionamiento también. Por ejemplo, cuando conectamos un lápiz USB.

sudo dmesg | grep “sd.” => con una expresion regular simple, vemos todos los discos duros reconocidos e información sobre ellos.

sdb2 < sdb5 sdb6 >
Quiere decir que la sdb2 es una partición extendida que dentro contiene las particiones sdb5 y sdb6

¿ha reconocido alguna tarjeta de red? ¿qué marca? (-i para no distinguir entre mayúsculas y minúsculas)

El primer número es el tiempo, desde el arranque.

sudo dmesg | less
Podemos ver y buscar las cosas

sudo modprobe mac80211_hwsim => si creamos la wifi virtual, veremos que hay cambios si hacemos dsmesg

T formato tiempo
d de delta: muestra la diferencia de tiempo respecto al tiempo anterior
Aquí podemos ver si le ha costado mucho cargar algo

sudo dmesg -d | grep vboxdrv

Monitorizar en tiempo real, constantemente muestra los cambios: sudo dmesg -w

Muy útil para detecar errores. Herramienta de diagnóstico.

lspci

lspci: muestra tarjetas/dispositivos PCI conectadas
nos dá los kernel modules (drivers) que ha usado para trabajar con ese hardware
lspci -nn: nos muestra la “clase” [0600]: es el código del tipo de hardware
[8080:191f]: vendor id (código internacional del fabricante de hardware) y product id – identifica exactamente cuál es el hardware
lsusb
0bda:0329 Realtek Semiconductor Corp. id_fabricante:id_producto
lscpu

hyperthreading: hacer creer a un sistema de 4 nucleos, que es de 8 núcleos, poniendo 2 threads por núcleo. [Hilo(s) de procesamiento por núcleo, sería 2)

Caché L1, L2, L3: caches nivel 1, nivel 2, nivel 3. Muy importnate el tamaño de caché!!

Indicadores: flags – características muy concretas de la CPU
vmx: soporta virtualización – programa qemu necesita este flag!

todos estos datos se obtienen de esta carpeta:

/proc – es una construcción mentqal del kernel: es una carpeta virtual
lscpu está cogiendo los datos de /proc/cpuinfo! estos archivos de /proc, los ha generado el kernel en el arranque!
por ejemplo, el comando findmnt, va a mirar el archivo /proc/mounts, pero lo presenta de manera más amigable
cada una de las carpetas con numeros, son procesos: procesos que están corriendo – son todas las carpetas y subcarpetas que “top” sabe interpretar y te muestra – realmente no son caerpetas: están en la RAM
ps -ef

dmidecode: te dice todo aquello que la BIOS te ha detectado (previo al kernel)

por ejemplo, podemos ver la RAM máxima podemos poner
número de solts de RAM: 4
slot “ChannelB”: 8 GBytes DDR4
32GBytes RAM
resumen del systema
muestra info de la bios

Comandos te Tiempo

Es MUY importante que la hora del sistema sea correcta. Si no, puedes no poder navegar por HTTPS, certificados no funcionarian, a parte los logs serían incorrectos.

Forma antigua: 

hora hardware (reloj placa base) y hora software (reloj del sistema). La hora harware deberia ser la hora UTC (Universal Time Clock, hora de Inglaterra).

Y el software, estará adelantado o retrasado respecto a la hora hardware.

con el comande date, solo cambiamos la hora software: al reiniciar, no se habrá cambiado nada.

Cambio de hora de hardware (forma antigua, con hwclock):

Sistema nuevo de cambio de hora: con systemd! (comando timedatectl)

dá error al intentar cambiar la hora porque la hora está sincronizada con el servidor (servidores NTP NetWork Time Protocol).
proyecto servidores NTP
cliente NTP

Cambio de hora a mano: mala práctica! Se debe de usar un servidor NTP.

Te puedes montar un servidor NTP propio.

sudo nano /etc/systemd/timesyncd.conf

hemos colocado la hora hardware igual que la UTC, que es como ha de ser

Arrancamos de nuevo el servicio time sync, así volveremos a la hora correcta:

Cambio zona horaria:


WEBs para estar al día:

phoronix

planets: recopilación de blogs de gente

hackernews

Servidor CUPS (de impresión)

Common Unix Printing System… hecho por Apple!! Y es libre!

Instalamos cups: sudo apt install cups

sudo apt install cups-pdf: instala impresora virtual PDF:

La gran mayoria de todas las impresoras del mercado, el Cups las puede hacer funcionar

Panel de control propio del cups:

Podemos agregar impresoras, administrar trabajos, print spool.

Podremos compartir impresoras.
Allow remote administration, para poder entrar a este panel desde otra máquina.

certificados gratuitos, requiere dominio en internet

Otra manera para configurar impresoras: por comandos

Muestra impresoras del sistema
sudo lpadmin -d PDF => Pone impresora PDF como por defecto.
lp envía a imprimir

lpr: comando antiguo de impresión

Journald: gfestiona los registros del sistema: todo aquello que ha pasado y sea relevante: error, advertencia, noticia – No era el que hace años se usaba, que era el syslog: rsyslog, syslogng, etc…

Journal viene con el systemd

Para que funcione el journal, ha de estar en marcha siempre el servicio :

sudo systemctl status systemd-journald

sudo nano /etc/systemd/journald.conf

Por defecto, el journald NO guarda los registros en disco: los guarda en RAM y se borran a cada reinicio del sistema

Para el almacenamiento persistente, Storage=persistent

SystemMaxUse será entonces importante, para que no alcancemos el espacio total del disco! Indica tamaño máximo! Ejemplo: SystemMaxUse=10G, reservamos 10 Gigas para los ficheros de registros.

man journald.conf

Los ficheros importantes del sistema, tienen su página en el manual!

OJO! no son ficheros de texto!!!! Por temas de eficiencia. Para leerlo, necesitamos la herramienta journalctl

sudo usermod -a -G systemd-journal lpic1
Para que funcionara, se ha de cerrar la sesión de ese usuario lpic1 y volverla a abrir

parámetros journalctl:

sudo journalctl -f (f de follow)
Se espera a que hayan eventos y lo muestra

dps muestra solo cosas del kernel, pero este lo muewstra de todo el sistema

SOLO kernel: journalctl -fk (como el dmesg)

PAra ir al final del registro: journalctl -e (de end)

journalctl -n 15 (últimos 15 mensajes)

Si sólo queremos ver los registros de un determinado programa:

sudo journalctl –no-pager
No corta las lineas

id muestra info del usuario, grupos a los que pertenece

Mostrar resgistros de un determinado PID:

filtro info sólo respecto a un usuario en concreto (pasándole su UID)
combinamos, determinado usuario y determinado proceso (AND)
o de una cosa o de otra (OR)
Muestra solo mensajes de emergencia

sudo journalctl -p emerg
sudo journalctl -p alert
sudo journalctl -p critical
sudo journalctl -p err
sudo journalctl -p warning

muestra desde los warnings, para arriba (warning com minimo)

sudo journalctl –since “2018-10-31 10:00”

sudo journalctl –since “2018-10-31 10:00” until…?


Es posible ver los registros, de manera remota:

Instalamos un mini-mini servidor web para permitir mostrar esa información
paquete: systemd-journal-remote

El servidor se pone en marcha automáticamente???

NO!

systemd-journal-gatewayd

muestra los servicios y sus logs y posibles errores
Muestra sólo lo relacionados con un servicio, en este caso “cron” (u de unit, de servicio)

Todo servicio, tiene un fichero de configuracion, donde pone loaded:

Parámetros del arranque de ese programa

/lib/systemd/system

archivo de configuración del servicio
en /etc/default/cron tenemos los parámetros de arranque, se lo pasamos en el ExecStart, y así configuramos la manera de arranque del servicio

Para cada servicio, tenemos su archivo .service

Rest API:

curl -H “accept:application/json” http://192.168.20.206:19531/entries

Eso es una peticion Res

indicamos al servidor cómo nos ha de dar la información

obtenemos los datos json y podemos alimentarnos de esta información

SSH

Instalar servicio SSH

openssh-server

Lista de servidores a los que nos hemos conectado

ssh -p 24 lpic1@192.168.20.203 => Conectarse a un servidor SSH, pero usando el puerto 24, si el servidor está así configurado

Modo verbose:

ssh -v lpic1@92.168.20.203, te explica todo en la conexión. Es útil si te intentas conectar y se queda “tonto”:

sudo nano /etc/ssh/ssh_config => fichero de configuración del cliente SSH

Fichero de configuración del servidor SSH:

sudo nano /etc/ssh/sshd_config

las lineas con almoadilla, está como está por defecto ese parámetro!
Si lo quieres cambiar, hay que quitar la almoadilla y cambiar el parámetro


SFTP

comando scp copiar archivo a ordenador ermoto:

descargar fichero remoto:

scp lpic1@192.168.20.203:/home/lpic1/Escritorio/fstab /home/lpic1/Escritorio