viernes, 13 de septiembre de 2024

Las señales del pingüino asesino

Los más avanzados en GNU/Linux ya habéis imaginado que de lo que voy a hablar es del comando kill, mediante el cual podemos mandar mensajes a los diversos procesos que se están ejecutando en nuestro sistema.

Lo primero es identificar el proceso al que vamos a mandar una señal, para ello ejecutamos el comando

ps aux

Pero si lo ejecutamos así nos vamos a peder entre todos los procesos, imaginemos que queremos interactuar en algún programa, por ejemplo, kodi, pa

usuario      180914  0.0  0.0   2608  1700 ?        S    01:29   0:00 /bin/sh /usr/bin/kodi
usuario      180924 81.5  3.9 3016212 316192 ?      SLl  01:29   0:08 /usr/lib/x86_64-linux-gnu/kodi/kodi-x11
usuario      181112  0.0  0.0  11528   720 pts/0    S+   01:29   0:00 grep --color=auto kodi

En la segunda columna aparece el número de proceso, sobre la que podemos interactuar con la siguiente sintaxis.

kill -numeroonombredeseñal numerodeproceso 

El número o nombre de señal es opcional y por defecto es 15 que significa que queremos que se cierre ordenadamente, podría ser uno de estos dos comandos si queremos interactuar sobre el primer proceso de kodi:

kill  180914

ó

kill -15 180914

Supongamos que no se cierra, entonces tendríamos que mandar la señal del cerrado forzado:

kill -9 180914

Pero a pesar del nombre del comando no solo sirve para matar procesos, también los podemos cosas poner en pausa y reanudarlos a continuación, por ejemplo, supongamos un proceso de reproducción de un audio con VLC, lo primero es averiguar el primer número de proceso con el comando:

ps aux | grep -i vlc

usuario      189886  6.2  1.0 1704216 86284 ?       Sl   01:45   0:02 /usr/bin/vlc --started-from-file /home/usuario/audio.mp3
usuario      190291  0.0  0.0  11528   716 pts/1    S+   01:45   0:00 grep --color=auto -i vlc

Pausamos con el comando:

kill -STOP 189886

Seguiríamos haciendo nuestras cosas y ya no nos acordaríamos el número del proceso que está detenido algo que podemos saber simplemente tecleando:

jobs

Y para reanudarlo simplemente ejecutamos:

kill -CONT 189886

Podemos obtener el listado completo de señales disponibles con el comando:

kill -l


Fuentes:

viernes, 6 de septiembre de 2024

Ampliando RetroMultiInstaller: carpetas principales (II)

Los próximos primeros viernes de cada mes voy a retomar el análisis de la herramienta que creé para agrupar todos los scripts de instalación que tengo y seleccionarlo con un sencillo menú.

Así cada uno podrá adaptar RetroMultiInstaller a sus necesidades.

Aunque en el anterior artículo ya comenté algo de la estructura interna del programa, en este voy a explicar los directorios esenciales que cuelgan de la carpeta donde descomprimos RMI.

En el directorio donde copiamos Multi-installer hay una serie de directorios que contienen otros directorios y archivos.
La estructura de directorios es la siguiente:

├── commonscripts
├── installers
├── menus
├── shotcuts
│   ├── etc
│   │   └── xdg
│   │       └── menus
│   │           └── applications-merged
│   ├── opt
│   └── usr
│       └── share
│           ├── applications
│           ├── desktop-directories
│           └── pixmaps
└── resources
└── warning
└──tmp

Analizando cada directorio con más detalle:

  • commonscripts: aquí se incluyen todos los scripts de uso común y que llamaremos desde otros scripts.
  • installers: aquí se incluyen los script de instalación, uno por cada programa.
  • menus: son los archivos txt que contienen la definición de los menús.
    Cada archivo tiene la definición de un menú y cada línea de cada menú la definición de un programa a instalar o una categoría que abre un nuevo menú.
  • shotcuts: incluye todos los archivos para crear los accesos directos con sus iconos y las categorías especiales para agruparlos.
    Dentro de este directorio hay una estructura de subdirectorios igual que donde se van a copiar los archivos en el sistema operativo.
  • warning: incluye los archivos de texto con instrucciones u otra información que se mostrará al terminar la instalación del programa.
  • tmp: carpeta donde se crearán los archivos temporales para las instalaciones tales como el código fuente antes de compilar e instalar.

Casi todos los scripts se ejecutarán desde esta carpeta, por lo que siempre deberemos referirnos a ellos con una ruta relativa que parte de esta carpeta.
Todos los archivos que contienen las carpetas installers, menus, shotcuts y warning correspondientes a un programa a instalar, contienen al principio de su nombre la etiqueta que identifica ese programa en minúsculas.