GNU/Linux LPIC-1 / 29 de Octubre de 2018: tareas con cron, SQL, entorno gráfico, Grub y módulos de Kernel

Manera clásica
Utilizar el domonio Cron

Lista de tareas programadas a realizar:
sudo nano /etc/crontab

Tiene las variables de entorno SHELL y PATH

m: minutos
h: hora
dom: day of the month
mon: mes
dow: day of the week: 7 y 0 es domingo, 1 luenes, 2 martes
user: usuario que ejecutará esta tarea
command: tarea

*: cualquier valor: “a cualquier hora del minuto 17, de cualquier mes, etc”… es “a cada hora”. La primera linea es cada día a cada hora.

IMPORTANTE: Cuando se cambia este archivo, hay que reiniciar el demonio Cron!

Se pueden poner rangos con el guión: 
18-34 * * * * root poweroff => a cualquier hora, a cada minuto desde el 18 a y 24, apaga el ordenador
18 15-20 * * * root poweroff => a cada hora entre las 15:18 a 20:18, se apaga
18 15,20 * * * root poweroff => apaga a las 15:18 y a las 20:18
18 */5 * * * root poweroff => intérvalo cada 5 minutos (*/5 lo expresa)

Tachan!!!!!!!

OJO! Lo ha creado root, por eso el archivo sólo pertenece a root

ls /etc/cr*

se ejecutan cada dia
todos estos scripts se ejecutan cada día

Si estos scripts se ejecutan cada día, podemos modificar estos archivos y ya lo hará cada día:

crontab -e para programar tareas programadas para usuarios normales (no root):

le falta el campo de usuario, porque será tu usuario (el usuario identificado)
vamos a poder borrarlo con el usuario lpic1 porque tenemos permisos sobre la carpeta!
las tareas programadas como usuario normal, no hace falta que reiniciamos el servicio cron: ya se entera y lo comprueba

crontab -l: muestra crontab
contrab -e: edita crontab

Para ejecutar un comando sólo 1 vez en cierto tiempo: at

at +10 minutes touch tachan2.txt
“De aquí 10 minutos, crea el fichero tachan2.txt
Puede ser hours, days, months, days…
Requiere instalar el at.

CTRL+D = Guarda y detiene el prograama (parecido a CTRL+C, pero guardando)
atq: muestra la at queue
atrm 2: borraría la tarea 2

Hay una manera más moderna: timers de systemd

Una de las cosas que se comerá el “systemd” será también esto (pero esto NO entra en el examen!!)

programa “anacron”: tareas que no se han hecho con el cron porque la máquina estaba apagada o bien no se han ejecutado. El anacron, ejecutará todas esas tareas que no se hayan ejecutado.


SQL

BASES DE DATOS NO RELACIONALES: mucho más rápidas que las relacionales. No tenemos la garantía al 100% de que los datos estén correctos o tengan consistencia.

https://www.w3schools.com/sql/

SQLite: motor de base de datos embedded en tu propio ordenador. Por ejemplo, lo usa WhatsApp para almacenar las conversaciones en tu móvil.

Compilar SQLite:

podríamos hacer “sudo apt install sqlite”
Con sqlite -version te dice una version, pero no será lo ultimo de lo ultimo.

Gracias a descargar los fuentes y compilarlos, tendremos la última versión.
A demás, como lo compilamos en nuestra máquina, el compilador lo optimizará para la arquitectura de nuestra máquina.

Bajamos “sqlite-autoconf-3250200.tar.gz

Procedemos a la compilación:

prefix indica donde irá a parar el ejecutable del programa que estamos compilando. recomendable para que vaya a parar a una ruta del PATH:
El mimso ya lo coloca el ejecutable en /local/bin, las librerias en /local/… etc…

el configure comprueba si está todo correcto para poder compilarlo.
Si hay algún error, saldrá aquí. Si falta algo, tendríamos que hacer apt install y lo que falte

Hay un comando más amigable que poner el gcc con todo su montonazo de parámetros. Es el make.

El make llama al gcc de una determinada manera, para que lo haga todo de manera correcta. Son unos comandos que están escritos por  el propio programador y dicen cómo se ha de llamar el gcc para compilar este programa:

CURIOSIDAD: ¡Hay granjas de compilación! Programas gráficos 3D etc, tardan mucho… días!!!

Ahora sólo queda el paso de la INSTALACIÓN, que coloca todo donde toca (bin, etc). Requiere ROOT:

¡Ya tenemos el SQLite instalado!


Creamos una base de datos nueva:

sqlite3 lamevabd.db

Al final creamos la FOREN KEY (relaciona los campos AutorId con IdAutor de las 2 tables): clave “foreign”:

.schema muestra la estructura de la BDD

Mientras la tabla esté vacía, se puede borrar. Si hay datos, tenemos un problema! Porque ha de seguir el esquema!!

DROP TABLE Autors; => Borraria tabla Autors

INSERT INTO Autors VALUES (7,”Poe”,0);

ERROR si intentamos agregar un registro con el único PRIMARY key!

No hace falta que pongamos manualmente el valor del PRIMAREY Key:

Si no especificamos un valor, lo pone como NULL

Si referenciamos a un autor que no existe, el SQLite no tiene activado el comprobar el FOREIGN KEYS, y entonces se lo traga…

PAra activar el FOREIGN KEYS en el SQLite:

Y ahora si, si intentamos poner un libro de un autor que no está, da error:

Podemos insertar varios elementos de golpe

Las consultas se hacen con SELECT:

Para que salgan los títulos de las tablas:

.mode column
SELECT * FROM Llibre;
orden “DESC”: descendiente: ordena al revés

Puedo encontrar el libro mas caro o mas barato así:

Muestra libros más caros de 60:

Muestra todos los libros que empiezan por El (comodin *):

El comodin guión bajo _ seria para una sola letra.

Cambiamos un valor:

UPDATE Autors SET Nom=”Allan Poe” WHERE Nom LIKE “Poe”;
Es mejor poner LIKE que el igual.

borramos un registro

Entorno gráfico, X Servers

servidor X se pone en marcha al principio del arranque y que cambia de modo texto a modo gráfico.

Pasa de “modo carácter” a “modo pixel”.

Es un programa más.

El escritorio se basa en el servidor X. Servidor X es la plataforma invisible sobre donde se montan los escritorio y demás programas gráficos.

Xorg es el servidor X que se usa habitualmente en Linux

Si matamos el Xorg, matamos el entorno gráfico: sudo kill -s 9 1320

Podemos tener un servidor X en una pantalla y otro en otra pantalla: ejecutamos Xorg

Si cambiamos de terminal (CTRL+ALT+Fx), y ejecutamos Xorg, arrancamos otro servidor X.

Xorg :0 (indica display 0)

Xorg :1 (otra pantalla diferente: la 1)

Xorg :1 & [& hace pasar en segundo plano la ejecucion esta y el terminal no se queda ocupado)

OJO! Solo activa el modo gráficoL: saldrá el cursor del ratón.
Ahora falta añadir el escritorio y todos los programas para tener el entorno montado.

Instalamos otro servidor X: xserver-xephyr:

Es un “juguete”, pero va bien para probar: pone el nuevo servidor X en una ventana.

Linux es un conjunto de programas!

Un escritorio es un conjunto de programas!

Si cambiamos esta variable de entorno, cambiamos el display por defecto al que enviamos todos los programas, y a partir de ahora, todos los programas que pongamos en marcha se irán al display 1:

export DISPLAY=:1

export DISPLAY=:1

Hemos de arrancar el “gestor de ventanas” (windows manager): permiten manejar las ventanas.

Instalamos un gestor de ventanas (muter, el de gnome, es exclusivo de gnome y solo se puede usar con genome).

twm: tiny window manager
wmaker: otro

twm: cutre!

jobs: saber qué comandos están en segundo plano
kill -s 9 %3 (ponemos %3 porque lo cogemos de la lista mostrada por jobs)

wmaker

Poner todo un escritorio dentro de otro terminal:

gnome-session


Comandos que van hacia el servidor X:

Cambiar de resolucion (manera rápida):
xrandx

cambio de orientación: xrandr -0 left
xrandr -0 inverted
xrandx -0 normal

El servidor X tambien gestiona el nivel de colores:

xgamma -rgamma 
1: valor normal – 10:valor maximo  –  0.1: valor minimo
cambiamos RGB:
xgamma -rgamma 10 -ggamma 4 -bgamma 0.1
Lo dejamos todo normal:
xgamma -rgamma 1 -ggamma 1 -bgamma 1

Parece ser que al servidor X le queda poco tiempo… Otro tipo de programa lo va a sustituir: será el servidor gráfico llamado wayland:

Wayland sustituirá al servidor X

Ahora, la mayoría de distros tienen las 2.


Display Manager: programa empleado para inciar sesion en el escritorio (login gráfico) – GNome viene con el GDM.
KDM (otro del escritorio KDE)

Archivo de configuración del GDM: sudo nano /etc/gdm3/daemon.conf

Para que cuando arranque la máquina, no arranque el GDM y ya inicie la sesión determinado usuario.

Es posible instalar varios escritorios.

El GDM decide en qué escritorio se entra.

sudo apt install openbox

openbox es un cutre escritorio ideal para máquinas con muy poca RAM
Usado también en máquinas modo “quiosco”, como los cajeros automáticos

CURSIODIDAD: ls /usr/share/xsessions/
Opciones de diferentes escritorios

lo que realmente se ejecuta como escritorio

.desktop son accesos directos!

Saber donde están todos los accesos directos que están en los menús de GNome: /usr/share/applications:

pero los de arranque, repito, están en /usr/share/xsessions

Xwayland es un híbrido que permite la transición hacia Wayland!

Mòdul del Kernel: básicament reconeix hardware. s’executa només sota demanda

cuando se actualiza, van apareciendo las nuevas. Se quedan por si petan las versiones nuevas, poder arrancar con las viejas (modificando Grub)
para cada kernel nuevo, tendremos diferentes carpetas de módulos

Los módulos están asociados a la versión el Kernel

el ultimo comando muestra todos los sistemas de fichero que nuestro kernel puede entender

KO: Kernel Object (trozo de Kernel)

lista módulos que están en marcha: lsmod

kernel “tainted”, marcado, usa módulos que no están en él de serie.

sudo modinfo fuse

Cargar y descargar módulos:

sudo modprobe mac80211_hwsim
Crea tarjetas wifi ficticias

Descargamos módulo: sudo modprobe -r mac80211_hwsim

Hacer lista negra de módulos que no quieres cargar:

cd /etc/modprobe.d
nano blacklist.conf

añadimos los módulos que queremos hacer black list
no lo carga porque está en blacklist