Herramienta escrita en C que implementa la activación por sockets [socket activation] de forma independiente a systemd. Este mecanismo, popularizado por systemd, consiste en: Un agente [sasa] abre y escucha en uno o varios sockets [TCP, UDP o UNIX], los servicios no se inician hasta que llega la primera conexión, cuando se recibe una conexión, sasa ejecuta el binario del servicio y le pasa los descriptores de archivo [FD] de los sockets y el servicio hereda los FDs y atiende la petición directamente.
$ sasa --listen 127.0.0.1:3000 --exec /usr/bin/python3 -m http.server 8080
$ sasa --listen 0.0.0.0:9090 -v --user USER --group GROUP --chdir /opt/miapp --exec /opt/miapp/bin/mi-servicio
$ sasa --listen 0.0.0.0:3000 --listen unix:/run/miapp/app.sock --exec /usr/bin/miapp --socket-activation
$ sasa --listen udp://0.0.0.0:514 --exec /usr/bin/syslog-ng -f /etc/miapp.conf
Explicación de los argmentos:
--listen <addr> --> Socket a escuchar. Formatos: 0.0.0.0:8080, 127.0.0.1:3000, unix:/run/miapp.sock, [::]:443
--exec <cmd> --> Comando a ejecutar cuando llegue una conexión
--user USER --> Ejecutar el servicio con este usuario
--group GROUP --> Grupo de ejecución
--chdir <ruta> --> Directorio de trabajo del servicio
--env <KEY=VAL> --> Variables de entorno a pasar al servicio
--verbose, -v --> Modo depuración
--keep-alive --> Mantener el proceso hijo vivo tras cerrar conexiones