comment attribuer terminal variable de sortie de la commande précédente
Je suis très très nouveau dans le terminal script monde. Voici ce que je veux faire:
1) Find out the process that's using a given port (8000 in this case)
2) Kill that process
Assez simple. Je peux le faire manuellement à l'aide de:
lsof -i tcp:8000 -- get the PID of what's using the port
kill -9 $PID -- terminate the app using the port
Pour référence, voici exactement ce qui est renvoyé lors de l'utilisation de lsof -i tcp:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php 94735 MyUser 5u IPv6 0x9fbd127eb623aacf 0t0 TCP localhost:irdmi (LISTEN)
Voici mon problème: comment puis-je capturer la valeur PID de lsof -i tcp:8000
afin que je puisse utiliser cette variable pour la prochaine commande? Je sais comment créer une variable que j'attribue... mais pas ceux qui sont générées dynamiquement.
OriginalL'auteur Jacob Kranz | 2014-02-25
Vous devez vous connecter pour publier un commentaire.
La chose que vous cherchez s'appelle la substitution de commande. Il permet de traiter la sortie d'une commande comme entrée à la coquille.
Par exemple:
Il est également possible d'utiliser
`backticks`
au lieu du signe de dollar et des parenthèses, mais la plupart des shell guides de style vous recommandons d'éviter que.Dans votre cas, vous voulez probablement faire quelque chose comme ceci:
Le lien a été supprimé 🙁
mise à jour
OriginalL'auteur andrewdotn
Quelque chose le long de ces lignes devrait fonctionner:
avant d'utiliser la commande kill, juste l'écho pour s'assurer que.
(read cmd pid restofline && kill -9 $pid)
peut-être mieux, de sorte que le$pid
variable définie dans le tuyau shell interne est exécuté n'est pas perdu pour aller a la prochaine commande.OriginalL'auteur Fred Mitchell