Show HN: Systemd interativo – uma forma melhor de trabalhar com unidades do Systemd
(isd-project.github.io)isdé uma ferramenta que oferece uma maneira melhor de gerenciar unidades dosystemd, permitindo pesquisar unidades por meio de uma interface de usuário de terminal (TUI), atualizar automaticamente as prévias e oferecendo tratamento inteligente desudoe uma interface personalizável
Motivação curta
isdsimplifica o processo complexo necessário para interagir com unidades dosystemd, fornecendo informações úteis ao usuário- Reduz o incômodo de digitar repetidamente comandos
systemctle atualiza automaticamente os resultados de saída
Instalação
isdpode ser instalado via AppImage, nix e uv- AppImage é um único executável que pode rodar em qualquer distribuição Linux, podendo ser usado até em servidores remotos com permissões restritas
- Para instalar o
isdem um ambiente nix, é possível usar o pacote nix - uv é um gerenciador de pacotes Python, e o
isdpode ser instalado e gerenciado por meio dele
Como usar o isd
isdpermite pesquisar unidades dosystemd, verificar o estado delas e fornecer prévias com informações detalhadas de várias unidades- Envia comandos
systemctlpara a unidade selecionada e atualiza automaticamente a saída de status - É possível abrir o
pagerdentro doisdpara ver a saída completa de status - Também é possível abrir um
pagerseparado para a saída doJournal, além de configurar temas e atalhos de teclado personalizados
Modo usuário/sistema
isdroda nos modosuserousystem, e o tipo de unidades exibidas varia conforme o modo
Busca fuzzy
- Por meio da barra de busca fuzzy, carrega todas as unidades e arquivos de unidade que correspondem ao texto digitado e os destaca de acordo com o estado atual
Seleção de várias unidades
- É possível selecionar várias unidades no widget de resultados de busca e visualizar a prévia das unidades selecionadas
Paleta de comandos
- É possível abrir a paleta de comandos para ver todos os comandos disponíveis e seus atalhos de teclado
Comandos
- Por exemplo, pressionando
Ctrl+O, é possível parar a unidade selecionada
Suporte a pager
- Ao executar o
isd, é possível abrir opagerpara ver toda a saída da prévia
Personalização
isdoferece personalização e configurabilidade, com vários temas e atalhos de teclado para ajudar o usuário a alcançar a melhor produtividade
Resumo
- Recomenda-se experimentar o
isddiretamente para avaliar se ele será útil
Próximos passos
- Verifique as seções de personalização e segurança
1 comentários
Opiniões no Hacker News
Parece bom
A forma como o ExecStop é tratado em scripts de serviço do systemd era realmente confusa
ExecStarté o comando executado na inicialização do sistema ou quando o usuário inicia o serviço, masExecStopé executado depois que o comando de inicialização terminaPara fazer com que o comando de stop seja executado no desligamento do sistema ou quando o usuário para o serviço, é preciso definir
RemainAfterExit=yesNa prática,
ExecStopestá mais para um evento de “momento de limpeza” do que para um evento de “encerramento do serviço”É preciso lembrar que o systemd é voltado para daemons
Se o serviço executa apenas um comando que termina em algum momento, você precisa dizer explicitamente ao systemd para tratá-lo de forma diferente de um daemon
Como outras pessoas disseram, provavelmente
oneshot+RemainAfterExité a combinação que você quertype=forking, ExecStop funciona da forma esperadaGostei muito
Usei só linha de comando pura até cansar, e recentemente comecei a usar ferramentas como
lazygit/lazydockerpara enxergar estados opacos de sistemas/árvores, e minha produtividade aumentou bastanteGerencio vários serviços em nível de usuário e de sistema, mas depurar é tedioso
A parte da primeira frase que enumera comandos comuns e seus incômodos bateu muito comigo
Como uso NixOS, editar diretamente arquivos de unit imutáveis não vai funcionar, mas a exploração, visibilidade e gestão de serviços devem ajudar muito
Pretendo adicionar um “guia” à documentação, mas, em resumo, ao depurar units no NixOS, vale a pena experimentar
systemctl edit --runtimeA depuração fica muito mais fácil
Parece muito bom
Mantenho um projeto parecido, e lidar com a API systemd/dbus foi bem doloroso
Quero testar este para ver se consigo aprender algo
https://github.com/rgwood/systemctl-tui
Acho que vou usar bastante
A única coisa que falta é um pacote deb
Finalmente saiu um systemd-client, que bom
Tomara que o próximo passo seja uma TUI para sistemas não Linux, como macOS, FreeBSD e Windows
No macOS eu uso o LaunchControl.app, mas ele não é TUI
Uma observação: no
uv 0.5.21, tive que fazer como abaixo, euvxnão funcionou de jeito nenhum$ uv tool install git+https://github.com/isd-project/isdPor outro lado, o comando da documentação,
$ uv tool install https://github.com/isd-project/isd/isd@latest, não funcionouAinda assim, o
uvé muito mais rápido quepip(x), então migreiObrigado por avisar
É legal ver como o
uvtorna tão fácil instalar ferramentas desse tipoO que faltou no procedimento de instalação é que o
uvignora as dependências de Python ao instalar esta ferramentaMinha máquina estava na 3.10, então o
isdnão funcionava, e resolvi com a opção-p 3.13Vale a pena mencionar isso na documentação
Incluí essa flag na documentação
“Se você já ficou irritado digitando” — isso sou eu
Mesmo gostando do systemd
Ainda não instalei, mas queria saber se dá para conectar a hosts remotos
Uso bastante
systemctl --host status foo.servicee verifico status, timers, logs etc. remotamentesystemctl --hostInfelizmente não há suporte
Em linhas gerais, é mais como um wrapper sofisticado em torno do
systemctllocalAinda assim, como há um AppImage, hopefully pode ser fácil executá-lo em um servidor remoto
De todo modo, se você abrir uma issue, vou dar uma olhada
Não dá para instalar algo assim em servidores remotos ou imagens Docker
São necessários vários backends para executar comandos e coletar informações: local, SSH, Docker
Depois de instalado localmente, ele deveria conseguir executar comandos em uma máquina remota via SSH e também via
docker execFico em dúvida se “este AppImage não funciona se o Nix estiver instalado” é realmente correto
Entendo por que não funciona no NixOS. Parecia não conseguir executar o
systemctldo hostMas não vejo motivo para não funcionar quando o Nix está apenas instalado em outro sistema operacional
Curiosamente, no Nix v2.24.11, nem o comando Nix fornecido funcionou
$ nix run https://github.com/isd-project/isdfalhou comFailed to open archive (Unrecognized archive format)Talvez funcione se for alterado para o formato de URL Git, mas como o Nix tem um fetcher nativo do GitHub mais eficiente, o comando correto parece ser
nix run github:isd-project/isdO projeto em si é bacana
Eu originalmente queria criar algo parecido com a API DBus do systemd e Qt, e até escrevi um pouco de código
A API DBus provavelmente oferece quase todos os recursos necessários. Claro que chamar
systemd -Hé muito mais fácil do que implementar seu próprio tunelamento SSHÉ frustrante que o systemd e o Linux moderno tenham tantos dados e interfaces que poderiam facilitar a administração do sistema, especialmente a administração de desktops, que tradicionalmente era pouco transparente por dentro, mas isso ainda seja pouco exposto
Antes era difícil saber o que tinha acontecido quando um app de inicialização automática xdg falhava, mas agora, como em alguns desktops o systemd executa esses apps de inicialização automática xdg, é fácil criar uma GUI que mostre os itens de inicialização automática com falha e um visualizador de logs
Só que parece não haver nenhuma ferramenta mantida e relativamente completa em recursos, o que é bem frustrante
Em resumo, o AppImage é gerado com nix, e o AppImage “monta” o diretório
/nix/de dentro do próprio AppImage. Não é um overlayPor isso, chamadas que acessam
/nix/na TUI não vão para o diretório/nixdo sistema, e todo tipo de problema estranho acontecePor exemplo, no Ubuntu, você pode instalar o
EDITORcom home-managerComo
systemctlestá “acessível”, oisdinicia normalmente, mas, ao abrir oEDITORem/nix, ele não é encontrado, o que é muito confuso para o usuárioEntão é mais fácil dizer que, se você já usa Nix, use o método de instalação via Nix
A documentação incorreta já foi corrigida
Também compartilho essa frustração
Pessoalmente, eu acharia muito divertido criar uma ferramenta dessas, mas não é uma tarefa fácil, e também há a questão de quem apoiaria esse trabalho
Mesmo esta TUI, com um escopo administrável, deu bastante trabalho
Por isso, não acho que vou investir demais em uma “interface de nível mais alto”
Além disso, não sei por que a reação ao comentário original está negativa
Alguém consegue explicar?
Parece excelente e bem feito
Só é uma pena que uma ferramenta dessas seja necessária
A maior parte das interações com o systemd é trivial: reiniciar um serviço, ver o arquivo de log para entender o que deu errado, verificar se um serviço inicia no boot
Não entendo como a usabilidade do systemd pode ser tão deficiente nessas tarefas comuns
Ainda assim, esta TUI parece ajudar, então obrigado
Claro, ao contrário do initd, o systemd é mais determinístico e inclui todo tipo de recurso
Felizmente, hoje em dia dá para automatizar e fazer desaparecer a maioria dessas interações, então aquele ódio ardente de antes já não existe
Agora é mais como brasas
Mesmo assim, teria sido muito bom haver uma interface mais próxima do projeto upstream
Mas parece que tornar o systemd amigável para iniciantes e acessível não é tão importante no financiamento deles
Como a segurança é tratada?
Não estou falando das permissões do sistema, que o Linux lida bem, mas sim de que garantia há de que ele não será sequestrado por um invasor externo e controlado remotamente
Acho que essa é uma pergunta importante que você deve se fazer ao executar uma aplicação ou script que faz algo com
sudoPor isso escrevi uma seção Security bem detalhada na página de documentação do isd
https://isd-project.github.io/isd/security/
Se houver algo faltando, eu gostaria que você me avisasse