Bạn có thể nhìn vào trường thứ 5 trong đầu ra của /proc/[pid]/stat
.
$ ps -ejH | grep firefox
3043 2683 2683 ? 00:00:21 firefox
$ < /proc/3043/stat sed -n '$s/.*) [^ ]* [^ ]* \([^ ]*\).*/\1/p'
2683
Từ man proc
:
/proc/[pid]/stat
Status information about the process. This is used by ps(1). It is defined in /usr/src/linux/fs/proc/array.c.
The fields, in order, with their proper scanf(3) format specifiers, are:
pid %d The process ID.
comm %s The filename of the executable, in parentheses. This is visible whether or not the executable is swapped out.
state %c One character from the string "RSDZTW" where R is running, S is sleeping in an interruptible wait, D is waiting in
uninterruptible disk sleep, Z is zombie, T is traced or stopped (on a signal), and W is paging.
ppid %d The PID of the parent.
pgrp %d The process group ID of the process.
session %d The session ID of the process.
Lưu ý rằng bạn không thể sử dụng:
awk '{print $5}'
Bởi vì tập tin đó không phải là một danh sách trống. Trường thứ hai (tên quy trình có thể chứa khoảng trắng hoặc thậm chí các ký tự dòng mới). Ví dụ, hầu hết các chủ đề firefox
thường có ký tự khoảng trắng trong tên của chúng.
Vì vậy, bạn cần in trường thứ 3 sau lần xuất hiện cuối cùng của một )
ký tự trong đó.
awk '{print $5}'
không được đảm bảo để cung cấp cho bạn câu trả lời đúng vì tên quy trình (trường thứ hai) có thể chứa ký tự khoảng trắng hoặc dòng mới.