簡體   English   中英

fuser 命令輸出進程 ID 提取

[英]fuser command output process ID extraction

嘗試從Fuser輸出中提取使用給定端口號的進程 ID,如下所示

$ fuser 9092/tcp
9092/tcp:             5920

使用awk提取 PID 沒有發生

$ fuser 9092/tcp | awk -F: '{print $2}'
9092/tcp:

從提取的PID中,我想做ls -l /proc/5920/exe類的

ls -l /proc/$(fuser 9092/tcp | awk -F: '{print $2}')/exe

二進制版本如下:

bash --version  # GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
fuser --version  # fuser (PSmisc) 22.20

fuser輸出的非正式部分進入標准錯誤。 標准輸出的輸出已經是計算機可讀的。 (這是一個功能,而不是一個錯誤。)

簡單地說,如果您認為它無用或分散注意力,您可以重定向標准錯誤以擺脫 stderr 輸出。

$ fuser 9092/tcp 2>/dev/null
5920

您可以通過管道輕松地為自己建立這個,例如到nl

$ fuser 9092/tcp | nl
9092/tcp: 
1       5920

請注意9092/tcp:輸出如何沒有獲得行號——它沒有通過管道傳輸到nl

所以你的實際代碼可能看起來像

ls -l /proc/$(fuser 9092/tcp 2>/dev/null)/exe

(雖然通常不在腳本中使用ls

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM