![取得 UNIX 中高內存使用進程的完整命令名](https://rvso.com/image/191771/%E5%8F%96%E5%BE%97%20UNIX%20%E4%B8%AD%E9%AB%98%E5%85%A7%E5%AD%98%E4%BD%BF%E7%94%A8%E9%80%B2%E7%A8%8B%E7%9A%84%E5%AE%8C%E6%95%B4%E5%91%BD%E4%BB%A4%E5%90%8D.png)
我正在嘗試捕獲在我的盒子上使用高內存的進程名稱。我跑下面的命令來得到它
while [ 1 ]
do
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head
sleep 5
done
但問題是它沒有給我針對 PID 運行的完整 cmd 詳細資訊。我得到的輸出是這樣的:
PID PPID CMD %MEM %CPU
916 915 /usr/bin/perl /release/data/ 11.9 0.2
831 830 /usr/bin/perl -w /release/da 6.5 0.0
608 607 /etc/alternatives/java_sdk_ 2.4 1.2
135 134 /etc/alternatives/java_sdk_ 1.4 1.6
我想捕獲 PID 的完整命令。
答案1
我假設「完整的 cmd 詳細資料」是指包含 arg 清單?如果是這樣,請嘗試下面這個。它將為您提供最多 100 個字元寬的 CMD 列。您可以根據需要進行調整。
ps -eo pid,ppid,cmd:100,%mem,%cpu --sort=-%mem | head
答案2
您可以隨時使用頂部帶開關的命令來操作輸出:
top -b -c -n 1 -o +%MEM | sed -n '7,17p'