Show HN: Interactive Systemd – una forma mejorada de trabajar con unidades de Systemd
(isd-project.github.io)isdes una herramienta que ofrece una mejor manera de administrar unidades desystemd, con una interfaz de usuario de terminal (TUI) para buscar unidades, actualizar automáticamente la vista previa y ofrecer un manejo inteligente desudojunto con una interfaz personalizable.
Motivación breve
isdsimplifica el proceso complejo necesario para interactuar con unidades desystemdy proporciona información útil al usuario.- Reduce la molestia de tener que escribir repetidamente comandos
systemctly actualiza automáticamente los resultados de salida.
Instalación
isdpuede instalarse mediante AppImage, nix y uv.- AppImage es un ejecutable único que puede ejecutarse en cualquier distribución de Linux, por lo que también puede usarse en servidores remotos con permisos restringidos.
- Para instalar
isden un entorno nix, puede usarse el paquete de nix. - uv es un gestor de paquetes de Python; mediante uv se puede instalar y administrar
isd.
Cómo usar isd
isdpermite buscar unidades desystemd, revisar su estado y mostrar una vista previa con información detallada de varias unidades.- Envía comandos
systemctla la unidad seleccionada y actualiza automáticamente la salida de estado. - Dentro de
isd, se puede abrir unpagerpara ver la salida completa del estado. - También se puede abrir un
pagerseparado para la salida deJournal, y configurar temas y atajos de teclado personalizados.
Modo usuario/sistema
isdse ejecuta en modouserosystem, y el tipo de unidades mostradas cambia según el modo.
Búsqueda difusa
- A través de la barra de búsqueda difusa, carga todas las unidades y archivos de unidad que coinciden con lo ingresado, y los resalta según su estado actual.
Selección de varias unidades
- En el widget de resultados de búsqueda se pueden seleccionar varias unidades, y se ofrece una vista previa de las unidades seleccionadas.
Paleta de comandos
- Se puede abrir la paleta de comandos para ver todos los comandos disponibles y sus atajos de teclado.
Comandos
- Por ejemplo, al presionar
Ctrl+Ose puede detener la unidad seleccionada.
Soporte para pager
- Mientras se ejecuta
isd, se puede abrir unpagerpara ver la salida completa de la vista previa.
Personalización
isdofrece personalización y posibilidades de configuración, con varios temas y atajos de teclado para que el usuario logre una productividad óptima.
Resumen
- Se recomienda probar
isddirectamente para evaluar si te resulta útil.
Próximos pasos
- Revisar las secciones de personalización y seguridad
1 comentarios
Opiniones de Hacker News
Se ve bien
La forma en que se maneja ExecStop en los scripts de servicio de systemd siempre me pareció muy confusa
ExecStartes el comando que se ejecuta al arrancar el sistema o cuando el usuario inicia el servicio, peroExecStopse ejecuta después de que termina el comando de inicioPara que el comando stop se ejecute al apagar el sistema o cuando el usuario detiene el servicio, hay que configurar
RemainAfterExit=yesEn realidad,
ExecStopse parece más a un evento de “momento de limpieza” que a uno de “finalización del servicio”Hay que recordar que systemd está orientado a demonios
Si un servicio solo ejecuta un comando que termina en algún momento, hay que indicarle explícitamente a systemd que lo trate distinto de un demonio
Como dijeron otros, probablemente
oneshot+RemainAfterExitsea la combinación que buscastype=forking, ExecStop funciona de la forma esperadaMe encanta
Usé solo la línea de comandos pura hasta cansarme, y hace poco empecé a usar herramientas como
lazygit/lazydockerpara mirar dentro de sistemas/estados de árbol opacos, y mi productividad aumentó muchoAdministro varios servicios a nivel de usuario y de sistema, pero depurarlos es tedioso
Me pegó mucho la parte de la primera oración donde enumera comandos comunes y sus molestias
Como uso NixOS, editar directamente archivos unit inmutables no funcionará, pero la exploración, visibilidad y administración de servicios parecen de gran ayuda
Planeo agregar una “guía” a la documentación; en resumen, al depurar units en NixOS conviene revisar
systemctl edit --runtimeHace que la depuración sea mucho más fácil
Se ve muy bueno
Mantengo un proyecto parecido y lidiar con la API de systemd/dbus fue bastante doloroso
Quiero probar esto y ver si puedo aprender algo
https://github.com/rgwood/systemctl-tui
Creo que lo voy a usar mucho
Lo único que falta es un paquete deb
Por fin salió un cliente para systemd, qué bueno
Me gustaría que el siguiente paso fuera una TUI para sistemas no Linux como macOS, FreeBSD y Windows
En macOS uso LaunchControl.app, pero no es TUI
Un detalle: con
uv 0.5.21tuve que hacerlo así, yuvxno funcionó en absoluto$ uv tool install git+https://github.com/isd-project/isdEn cambio, el
$ uv tool install https://github.com/isd-project/isd/isd@latestde la documentación no funcionóAun así,
uves mucho más rápido quepip(x), así que me cambiéGracias por avisar
Es genial que gracias a
uvinstalar herramientas como esta sea tan fácilLo que falta en el proceso de instalación es aclarar que
uvinstala esta herramienta ignorando las dependencias de PythonMi máquina está en 3.10, así que
isdno funcionaba; lo solucioné con la opción-p 3.13Vale la pena mencionarlo en la documentación
Incluí esa bandera en la documentación
Eso de “si alguna vez te frustraste al escribir” me describe perfecto
Y eso que me gusta systemd
Todavía no lo instalé, pero me pregunto si puede conectarse a hosts remotos
Uso mucho
systemctl --host status foo.service, y reviso status, timers, logs, etc. de forma remotasystemctl --hostLamentablemente no está soportado
En términos generales, es más bien un wrapper elegante alrededor del
systemctllocalAun así, como hay AppImage, hopefully podría ser fácil ejecutarlo en un servidor remoto
De todos modos, si abres un issue, lo revisaré
En servidores remotos o imágenes Docker no se puede instalar algo así
Se necesitan varios backends para ejecutar comandos y recopilar información: local, SSH, Docker
Debería poder instalarse localmente y luego ejecutar comandos en una máquina remota por SSH, y también mediante
docker execDudo que sea realmente cierto eso de “si tienes Nix instalado, este AppImage no funciona”
Entiendo por qué no funciona en NixOS. Parecía que no podía ejecutar el
systemctldel hostPero no veo por qué no debería funcionar en otros sistemas operativos donde simplemente esté instalado Nix
Curiosamente, con Nix v2.24.11 tampoco funcionó el comando de Nix proporcionado
$ nix run https://github.com/isd-project/isdfalla conFailed to open archive (Unrecognized archive format)Si se cambia al formato de URL de Git quizá funcione, pero como Nix tiene un fetcher nativo de GitHub más eficiente, el comando correcto parece ser
nix run github:isd-project/isdEl proyecto en sí está genial
Originalmente quería hacer algo parecido con la API de DBus de systemd y Qt, e incluso escribí algo de código
Es muy probable que la API de DBus ofrezca casi todo lo necesario. Claro que invocar
systemd -Hes mucho más fácil que implementar tu propio túnel SSHMe frustra que systemd y Linux moderno estén llenos de datos e interfaces que facilitarían la administración del sistema, especialmente la administración de escritorios, que tradicionalmente ha sido poco visible por dentro, pero que no estén bien expuestos
Antes era difícil saber qué pasaba cuando fallaba una app de inicio automático de xdg, pero ahora, como en algunos escritorios systemd ejecuta esas apps de inicio automático de xdg, sería fácil crear una GUI que muestre los elementos de inicio automático fallidos y un visor de logs
Sin embargo, no parece haber una herramienta mantenida y relativamente completa en funciones, lo cual es bastante frustrante
En resumen, el AppImage se genera con nix, y el AppImage “monta” el directorio
/nix/dentro del propio AppImage. No es un overlayPor eso, las llamadas desde la TUI que acceden a
/nix/no van al directorio/nixdel sistema, y aparecen todo tipo de problemas rarosPor ejemplo, en Ubuntu puedes instalar
EDITORcon home-managerComo
systemctlestá “accesible”,isdarranca normalmente, pero si abres elEDITORbajo/nix, no lo encuentra, lo que resulta muy confuso para el usuarioPor eso es más fácil decir que, si ya usas Nix, uses el método de instalación con Nix
La documentación incorrecta ya la corregí
También comparto esa frustración
Personalmente, construir una herramienta así sería muy divertido, pero no es una tarea fácil, y también está el problema de quién apoyaría ese trabajo
Esta TUI tenía un alcance manejable y aun así fue bastante trabajo
Así que no creo que vaya a invertir demasiado en una “interfaz de más alto nivel”
Además, no sé por qué el comentario original está recibiendo mala reacción
¿Alguien puede explicarlo?
Se ve excelente y está bien hecho
Pero me da pena que haga falta una herramienta como esta
La mayoría de las interacciones con systemd son triviales: reiniciar un servicio, revisar los logs para ver qué salió mal, verificar si un servicio arranca al iniciar el sistema
No entiendo cómo la usabilidad de systemd puede ser tan deficiente en tareas tan comunes
Aun así, parece que esta TUI ayuda, así que gracias
Por supuesto, a diferencia de initd, systemd es más determinista e incluye todo tipo de funciones
Por suerte, hoy en día se puede automatizar la mayoría de estas interacciones hasta hacerlas desaparecer, así que ya no le tengo el odio ardiente de antes
Ahora es más bien como brasas
Aun así, habría sido muy bueno tener una interfaz más cercana al proyecto upstream
Pero parece que hacer que systemd sea amigable y accesible para principiantes no es tan importante dentro de su financiamiento
¿Cómo se maneja la seguridad?
No me refiero a los permisos del sistema, que Linux maneja bien, sino a qué garantía hay de que no pueda ser comprometido por un atacante externo y controlado remotamente
Creo que es una pregunta importante que uno debe hacerse al ejecutar una aplicación o script que hace algo con
sudoPor eso escribí una sección de Security bastante detallada en la página de documentación de isd
https://isd-project.github.io/isd/security/
Si falta algo, agradecería que me avisaras