sigwire: una 'tail -f' para observar todas las señales del sistema en tiempo real

Fuentes: sigwire: a tail -f for every signal on the box

sigwire es una herramienta de código abierto que monitoriza en directo todas las señales que cualquier proceso del sistema genera —quién la envía, quién la recibe, qué señal es, cómo se produjo (kill(2), el propio kernel o un temporizador POSIX), si el destino la capturó y cuánto tardó su manejador, y si arrancó una llamada al sistema bloqueada con EINTR—. En lugar de依附earse a un proceso, se apoya en los tracepoints signal:signal_generate y signal:signal_deliver del kernel, lo que le permite vigilar de golpe toda la actividad de señales del equipo: aplicaciones, supervisores e incluso la maquinaria de fallos del propio núcleo, sin que ninguno de ellos sea consciente.

Cada señal aparece como una fila coloreada por severidad —rojo intenso para SIGKILL, rojo para señales que generan core dump como SIGSEGV o SIGABRT, ámbar para SIGTERM, verde para SIGCONT, cian para SIGUSR1/2, violeta para señales de tiempo real y gris para señales de mantenimiento como SIGCHLD—. La fila muestra el proceso emisor y el receptor con su PID, el nombre de la señal, el origen (kill, tgkill, temporizador, kernel o fault), y si interrumpió una syscall bloqueada. Se etiqueta con un símbolo de calavera (☠) cuando se trata de una muerte inequívoca: SIGKILL entregado o un fault síncrono del kernel que provocará un core dump. El resto —un SIGTERM de systemd, un Ctrl-C, un SIGPWR interno de un runtime— se muestra coloreado pero no se cuenta como fatal, porque el emisor no puede saber si el receptor tenía un manejador que la convierte en un cierre limpio.

Un panel lateral agrega estadísticas: señales más frecuentes por volumen, desglose por origen y un recuento de entregas (capturadas, acción por defecto, ignoradas). Al pausar el flujo y seleccionar una fila se abre un panel de detalle con la vía exacta de generación, los flags de sigaction, la dirección del manejador y el conjunto de señales bloqueadas por el proceso destino en ese instante. Un atajo permite filtrar únicamente las señales que interrumpieron syscalls bloqueadas —el típico bug de EINTR que hace que un read() falle de forma errática— y otro abre un selector para silenciar o mostrar señales concretas en vivo.