以下のコマンドを使用して列を分離しようとしていますが、PythonスクリプトでPIDを使用するようにしたいと思います。
この行を簡単に取得できますが、ハッキングされていない方法で列に分割する方法は?
スペースに簡単に分けることができますが、現実的には恐ろしい考えです。どんな提案がありますか?
root@python-VirtualBox:/var/python# lsof | grep TCP
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
Output information may be incomplete.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 3449 root 3u IPv4 24248 0t0 TCP *:22 (LISTEN)
sshd 3449 root 4u IPv6 24257 0t0 TCP *:22 (LISTEN)
ベストアンサー1
このlsof
コマンドは非常に多様で、さまざまな検索基準を指定できます。特に、この-i
オプションを使用すると、インターネットアドレス(プロトコルを含む)で検索できるため、grep
検索する必要はありません。だからあなたは交換することができます
lsof | grep TCP
そして
lsof -i TCP
lsof
また、このオプションを使用すると、目的のフィールドを指定し、その-F
フィールドのみ(1行に1つずつ)出力できます。だから私たちはできます
lsof -i TCP -F 'p'
TCPを使用するプロセスのPIDリストを印刷します。
ただし、各PIDには「p」プレフィックスが付いているため(たとえば「p156」)、最終的にこれを使用してcut
数値IDを取得できます。これは私たちに最後のコマンドを与えます
lsof -i TCP -F 'p' | cut -c 2-
もちろん、@RobertLの答えもとても良いですが、私はAWKを使用せずにすべてのテキスト処理の問題を解決するように挑戦したいと思います。