私はこのシステムから現在実行されているプロセスのpidのリストを保持しています(Linux)。このpidからプロセスの詳細を得ることができれば素晴らしいでしょう。 .Getrusage()はゴランではありますが、私は望みの結果を得ていません。 誰もそれに関連するアイデアを持っていますかpidからプロセスの詳細を取得する方法
27
A
答えて
2
/proc/[pid]/stat
を見ることができます。例えば、移動1、
package main
import (
"fmt"
"io/ioutil"
"os"
"strconv"
)
func Pids() ([]int, error) {
f, err := os.Open(`/proc`)
if err != nil {
return nil, err
}
defer f.Close()
names, err := f.Readdirnames(-1)
if err != nil {
return nil, err
}
pids := make([]int, 0, len(names))
for _, name := range names {
if pid, err := strconv.ParseInt(name, 10, 0); err == nil {
pids = append(pids, int(pid))
}
}
return pids, nil
}
func ProcPidStat(pid int) ([]byte, error) {
// /proc/[pid]/stat
// https://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.html
filename := `/proc/` + strconv.FormatInt(int64(pid), 10) + `/stat`
return ioutil.ReadFile(filename)
}
func main() {
pids, err := Pids()
if err != nil {
fmt.Println("pids:", err)
return
}
if len(pids) > 0 {
pid := pids[0]
stat, err := ProcPidStat(pid)
if err != nil {
fmt.Println("pid:", pid, err)
return
}
fmt.Println(`/proc/[pid]/stat:`, string(stat))
}
}
出力:これはアスカーは(プロセスIDごとに必要とされている内容のどのタイプに多くの明確な情報はありません)何を望むかを正確ではないかもしれません
/proc/[pid]/stat: 1 (init) S 0 1 1 0 -1 4202752 11119 405425 21 57 78 92 6643 527 20 0 1 0 3 24768512 563 184467440737095
45
、しかし、あなたはbashコマンドを使用して、pidでタスクのいくつかの詳細を得ることができ、デフォルトのオプションとしてでは
ps -p $PID
(プロセス状態のための短いことPS) ps -p $PID
この戻り値:
- PID:制御端末の名前(もしあれば)
- TIME:プロセスID
- TTYエコーどのくらいのCPU時間ザ・プロセス実行以降に使用していた(例えば夜12時00分02秒)
- CMD:このプロセスIDについてのプロセスと呼ばれるコマンド(例えば
java
)
詳細情報は-oオプションフラグを使用して示すことができます。リストについては、this documentation pageを参照してください。
引数、ユーザー、グループ、およびメモリーの使用状況に応じて、特定のプロセスPIDのフルコマンドを表示する1つの例を示します(複数の-oフラグがそれぞれどのようにペアになるか、およびコマンドが多くの空白埋めをどのように出力するか注意してください)。
ps -p $PID -o pid,vsz=MEMORY -o user,group=GROUP -o comm,args=ARGS
ヒント:コンソールでの人間読み込み出力のために、引数に最後のオプションを作る - それは、通常は最長になるだろうし、そうでない場合は短く切ってしまうかもしれません。
6
ここで、PIDはプロセスのPIDです。
関連する問題
- 1. データベースからデータの詳細を取得する方法は?
- 2. タイムゾーンから国の詳細を取得する方法は?
- 3. HttpResponseからBadRequestの詳細を取得する方法
- 4. シェルスクリプトでフォークされた子プロセスからプロセスID(pid)を取得する方法
- 5. 子プロセスからPIDを取得
- 6. より詳細な "詳細" apache/phpプロセスの表示方法
- 7. マスター/詳細テーブルの詳細テーブルの最後のレコードを取得する方法
- 8. URLからポートプロトコルの詳細を取得
- 9. ActivatedRouteSnapshotからルートの詳細を取得
- 10. linuxのpidからプロセスのパスまたは名前を取得する方法
- 11. iOSシステムのプロセスpidから他のアプリケーションアイコンを取得する方法は?
- 12. CA Rally - ProjectPermissionのような子オブジェクトの詳細を取得する方法プロジェクトの詳細を取得する
- 13. 詳細なasp.netキャッシュとセッションの詳細をメモリダンプから取得する
- 14. PayUからの取引の詳細を取得するには?
- 15. 他のアクティビティのListviewからアイテムの詳細を取得する方法
- 16. ネットワーク上の他のPCからファイルの詳細を取得する方法
- 17. 配列リストからすべての詳細を取得する方法
- 18. listviewの名前から連絡先の詳細を取得する方法
- 19. クラス名でPIDを取得し、取得したプロセスをkillする方法
- 20. DCM4CHEEから患者とスタディの詳細を取得する方法は?
- 21. msiのインストールから詳細な結果を取得する方法
- 22. どのようwp_users IDから詳細を取得する方法
- 23. WindowsのCRTメモリマネージャから詳細な診断を取得する方法は?
- 24. Azure Rate-APIメタデータからVMの詳細を取得する方法
- 25. 設定済みのメールアカウントの詳細を取得する方法
- 26. twitterで現在のユーザーの詳細を取得する方法
- 27. デバイスのGPSの詳細を取得する方法
- 28. socket.ioのミドルウェアでイベントの詳細を取得する方法
- 29. Instagramの画像の詳細を取得する方法
- 30. mongo dbの単一フィールドの詳細を取得する方法
あなたは 'syscall.Getrusage'からどのような結果を得ていますか? –
@Atom: 'getrusage - get resource usage'のLinuxのマニュアルページを参照してください。 – peterSO
入力0x0と0x1のために私はいくつかの構造体を与えていると私はこの関数はプロセスの詳細を取得するために使用することはできませんとプロセスを開始した人が排他的に使用していると感じる以下のコードで問題がpeterSOによって私はいくつかのプロセスのために取得している各pidのプロセスの詳細を読み込みます。プロセスが終了してタスクが完了したため、存在しない可能性のあるdirは存在しません。 – geek