我輸入了ps -p 3454 -o command
,得到的輸出是:
COMMAND
/usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh
這裡是什麼-D -a
意思?
如果我使用ps -p 3454 -o comm
,我不會得到 /run/user.... 輸出,而只是命令ssh-agent
。
這裡的 /run/user... 是什麼意思?還comm=
和comm
一樣嗎?
答案1
根據ps(1) — Linux 手冊頁根據我的測試,這裡有一些細節可以幫助澄清此輸出。這將幫助您更好地了解ps
正在運行的命令發生了什麼。
你的整個命令是這樣的ps -p 3454 -o command
- 這部分
ps -p 3454
獲取 pid 的活動運行進程詳細信息3454
- 這部分
-o command
輸出與 pid 相關的正在運行的進程的實際命令和參數
當你運行這個來顯示 pid 時3453
詳細資訊時,這恰好是ssh代理過程。使用-o command
原始命令和參數的輸出,這些命令和參數在命令拍攝快照時ssh-agent
使用參數。-D -a
ps
使用 just-o comm
實際上只是輸出 pid 的執行檔名。這實際上只是意味著-o comm
並-o command
顯示您正在查詢的進程的不同細節。
支持資源
-
comm
:- 顯示命令名稱(僅可執行檔名稱)。對命令名稱的修改將不會顯示。此列中的輸出可能包含空格。
command
:- 將命令及其所有參數顯示為字串。可能會顯示對參數的修改。此列中的輸出可能包含空格。
答案2
「-D -a」與PS無關。 PS 列出了進程 - 正在運行的進程是「/usr/bin/ssh-agent -D -a /run/user/1000/keyring/.ssh」 - 即 -D -a 是傳遞給 ssh-agent 的參數。
對於 ssh-agent:-D 表示在前台運行,-a 表示「綁定到所有位址」。
在我的Ubuntu 系統上,我看到2 個“ssh-agent”進程- 一個在後台,可能與我正在執行的命令行相關,而第二個是桌面會話的客戶端,因此很可能在前台,因此它可以與之互動。 (事實上,當我終止與 -D -a 選項相關的進程並從桌面執行 ssh 會話時,它會要求我再次進行身份驗證,並重新啟動該進程)