2010-04-28 7 views
0

Je voudrais un alias unique (ts) qui démarre mon serveur de développement local. le script doit tester un port ouvert à partir de 3000 et utiliser le premier port disponible. En outre, certains sites nécessitent un fichier rackup, rendant -R config.ru nécessaire. Ce script doit vérifier le répertoire en cours pour le fichier config.ru et l'ajouter à l'alias s'il est présent.démarrage intelligent intelligent avec alias de port pour bash

actuellement, pour commencer mon environnement de développement local, je lance:

alias ts="thin -R config.ru -p 3000 start" 

souvent, je dois exécuter plusieurs serveurs pour tester différents sites, donc j'ai créé des alias supplémentaires:

alias ts1="thin -R config.ru -p 3001 start" 

Répondre

1

Eh bien, vous pourriez faire quelque chose d'intelligent et regarder quels ports sont déjà liés en utilisant netstat et une commande comme

netstat -anp | grep LISTEN | awk '{print $4}' | sed s/".*:"//g | sort -n -u 

mais si vous ne se soucient pas de spam de la console laide, vous pouvez simplement continuer à essayer des ports jusqu'à ce que vous obtenez un comme ça

for ((port=3000; port <= 3010 ; port++)); do 
    if thin -p $port start; then break; fi 
done 
+0

Vous pouvez combiner la commande et la 'if':' si mince -p port $ début 2>/dev/null; puis cassez; fi' –

+0

Nice, merci! Mis à jour en conséquence. –

Questions connexes