Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dev Localhost Services Monitor

Un petit outil terminal (TUI) écrit en Rust pour détecter et gérer facilement les processus de développement locaux qui écoutent des ports TCP (serveurs, outils de dev, bases locales, etc.). Il liste les services "de dev" du même utilisateur, affiche leur PID, port, nom et commande, et permet de tuer proprement un processus depuis l'interface.

Principales caractéristiques

  • Découverte des sockets d'écoute TCP de l'utilisateur courant (via lsof).
  • Filtrage heuristique des processus « dev » (node, python, php, cargo, java, nginx, redis, …).
  • Interface terminal interactive avec sélection, rafraîchissement auto et actions (kill).
  • Tentative d'arrêt propre (SIGTERM) puis forcé (SIGKILL) si nécessaire.
  • Auto-rafraîchissement toutes les 10s + touche pour forcer.

Prérequis

  • Système Unix-like (macOS / Linux). L'outil s'appuie sur utilitaires système (lsof, ps, kill) — ils doivent être disponibles dans le PATH.
  • Rust / Cargo pour compiler (ou un binaire précompilé).
  • Terminal capable d'afficher les interfaces TUI.

Compilation & exécution

  • Construire en debug :
    • cargo build
  • Construire en release :
    • cargo build --release
  • Lancer directement avec Cargo (développement) :
    • cargo run --release
  • Exécutable après compilation :
    • ./target/release/localhostservicecs

Note : lancer le binaire avec des privilèges différents (ex. sudo) changera l'ensemble des processus visibles. Par défaut l'outil n'affiche que les processus appartenant à l'utilisateur courant.

Dev Snippet Manager Dev Snippet Manager

Installation en tant que commande globale

Une fois compilé, tu peux installer le binaire dans un répertoire du PATH système pour l'utiliser depuis n'importe quel terminal et n'importe quel répertoire.

Sur macOS avec Homebrew (recommandé)

# 1. Compiler en release (si pas déjà fait)
cargo build --release

# 2. Créer un lien symbolique vers /opt/homebrew/bin
ln -s "$(pwd)/target/release/localhostservicecs" /opt/homebrew/bin/listServ

# 3. Vérifier que c'est bien installé
which listServ
listServ  # Devrait lancer l'application

Sur Linux ou macOS sans Homebrew

# 1. Compiler en release
cargo build --release

# 2. Option A : Créer un lien symbolique dans /usr/local/bin
sudo ln -s "$(pwd)/target/release/localhostservicecs" /usr/local/bin/listServ

# 2. Option B : Copier le binaire directement
sudo cp target/release/localhostservicecs /usr/local/bin/listServ

# 3. S'assurer que c'est exécutable
sudo chmod +x /usr/local/bin/listServ

# 4. Vérifier
which listServ

Utilisation après installation

# Depuis n'importe quel répertoire, lance simplement :
listServ

# Ou avec des chemins, arguments, etc. (si l'app les supporte)
listServ

Désinstallation

# Supprimer le lien ou le binaire
rm /opt/homebrew/bin/listServ
# ou
sudo rm /usr/local/bin/listServ

Vérification du chemin

# Voir exactement où se trouve la commande
which listServ

# Voir si c'est un lien symbolique et sa cible
ls -la /opt/homebrew/bin/listServ

Utilisation (raccourcis clavier)

  • Flèches haut / bas ou j / k : naviguer dans la liste.
  • d (ou Delete / Backspace) : demander à tuer le processus sélectionné (ouvre une confirmation).
  • Enter (dans le popup) : confirmer et envoyer SIGTERM puis éventuellement SIGKILL.
  • Esc / n : annuler la confirmation ou revenir en arrière.
  • r : rafraîchir la liste manuellement.
  • q ou Esc en écran normal : quitter l'application.

Comportement & limites

  • Détection basée sur une liste de mots-clés (DEV_KEYWORDS) qui reconnaissent les noms binaires courants de runtime et outils de dev. Cela peut produire des faux positifs ou manquer des outils personnalisés.
  • L'outil ne fera pas apparaître les processus appartenant à un autre utilisateur (sauf si exécuté avec des droits permettant de les voir).
  • Nécessite lsof et ps. Si lsof est absent, la liste restera vide.
  • Les commandes kill sont exécutées via des appels système externes ; l'outil affiche un message indiquant si le kill a réussi ou échoué.

Sécurité et précautions

  • Tuer un processus peut entraîner perte de travail non sauvegardé (ex. tâches en cours, serveurs avec sessions, bases de données). Vérifiez toujours la commande affichée avant de confirmer.
  • L'outil exécute des commandes systèmes simples (lsof, ps, kill) — utilisez-le avec prudence.

Dépannage rapide

  • La liste est vide :
    • Vérifiez que lsof est installé et exécutable.
    • Assurez-vous d'avoir des serveurs locaux en écoute (ex. npm start, python -m http.server, etc.).
  • « Permission denied » ou résultats incomplets :
    • Exécuter en tant qu'autre utilisateur changera la visibilité ; évitez sudo sauf si vous comprenez l'impact.
  • Processus non détecté ou mal identifié :
    • Le nom exécutable peut ne pas correspondre aux mots-clés — vous pouvez étendre la liste dans le code source (DEV_KEYWORDS) si nécessaire.

Contribution / Licence

  • Ce dépôt ne contient pas forcément de fichier LICENSE. Si vous comptez réutiliser ce code, ajoutez une licence appropriée ou contactez l'auteur du projet.
  • Pour améliorer la détection ou corriger des cas particuliers, éditez la liste DEV_KEYWORDS et/ou la logique de parsing de lsof/ps.

Fichier(s) importants

  • src/main.rs : logique principale (découverte, UI, actions).
  • Cargo.toml : dépendances (ex. crossterm, ratatui).

Remarques finales Cet outil vise à faciliter la gestion rapide des processus de développement locaux depuis le terminal. Il est volontairement simple et extensible — si vous voulez que j'ajoute des fonctionnalités (ex. filtre par nom, exporter la liste, action de redémarrage, affichage de logs), dites-moi lesquelles et je proposerai des modifications de code.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages