Supprimer la sortie netstat (spécifiquement, tous les processus ne peuvent pas être identifiés comme ligne)

J’ai du mal à supprimer la sortie de la commande netstat lorsque je vérifie si un port actuel est utilisé. Je n’ai pas besoin de la sortie de la commande mais plutôt du code d’erreur.

netstat -anp | grep 1521 &>/dev/null cours d’exécution netstat -anp | grep 1521 &>/dev/null netstat -anp | grep 1521 &>/dev/null résultats dans

 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) 

étant affiché comme la sortie. J’ai aussi essayé:

 2>/dev/null| cut -d' ' -f45-50 | sed 's/[^0-9]*//g' 

qui ne fait que créer un tas de lignes vides après la sortie Pas tous les processus … mais les affiche toujours dans la sortie.

fini par résoudre mon propre problème. Utilisez le suivant

 netstat -taepn 2>/dev/null | grep -Po "\b(\d|\.)+:1521\b" 1>/dev/null 

Ceci est spécifique à ma situation lorsque je veux juste le code d’erreur et pas de sortie

La réponse acceptée ne fonctionne pas pour moi, CentOS6.5 32bit ici. Il ne produit rien, quel que soit l’état du port.

J’ai trouvé ma solution:

 netstat -antp 2>/dev/null | grep [port-num] 

Cela omettra les deux premières lignes de netstat si elle est exécutée par un utilisateur régulier.

Les deux lignes d’avertissement devaient être omises:

 (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) 

et travaille dans deux situations:

  1. le port est à l’état “LISTEN”
  2. le port est l’état “TIME_WAIT”.