Câu trả lời:
Dòng lệnh:
ps -o ppid= -p 1111
Chức năng:
ppid () { ps -p ${1:-$$} -o ppid=; }
Bí danh (một chức năng là thích hợp hơn ):
alias ppid='ps -o ppid= -p'
Kịch bản:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
Nếu không có PID nào được cung cấp cho hàm hoặc tập lệnh, chúng sẽ mặc định hiển thị PPID của quy trình hiện tại.
Để sử dụng bí danh, phải cung cấp một bộ lọc.
=
dấu hiệu là không cần thiết, ít nhất là trên OS X 10.8.2.
Đây là một trong những điều tôi học, quên, học lại, lặp lại. Nhưng nó hữu ích. Cờ của lệnh pstree hiển thị một cây có lá tại N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
Pid cha là PPID biến vỏ, vì vậy
echo $PPID
$PPID
chỉ giải quyết vấn đề mà tôi có mà Google đề xuất trang này là câu trả lời.
Để in id cha ( PPID
) của tất cả các quy trình, sử dụng lệnh này:
ps j
Đối với quy trình đơn, chỉ cần vượt qua PID, như : ps j 1234
.
Để chỉ trích xuất giá trị, hãy lọc đầu ra theo awk
, như:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Để liệt kê các PID của tất cả các bậc cha mẹ, hãy sử dụng pstree
(cài đặt nó nếu bạn không có nó):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Để có được cha mẹ của quá trình hiện tại, sử dụng echo $$
.
pstree
là cái đẹp nhất tôi từng thấy ở đây.
ps j
là tuyệt vời vì nó có sẵn trên nhiều bản phát hành và có thể dễ dàng ghép lại
Đọc / Proc / $ PID / trạng thái. Có thể dễ dàng viết kịch bản:
#! / thùng / sh P = $ 1 nếu [-z "$ P"]; sau đó đọc P fi mèo / Proc / "$ P" / trạng thái | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
là tất cả những gì bạn cần. ( Rất hiếm khi các công cụ Unix thực hiện công việc if [ -z ]; then read
này.)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
Một ví dụ phức tạp hơn một chút kiểm tra lệnh của cha mẹ đã bắt đầu quá trình hiện tại Thay đổi comm = thành cmd = để xem lệnh đầy đủ
Đây là một giải pháp nhanh chóng cũng nên hoạt động:
ps $$
Chạy top
với bất kỳ tùy chọn nào bạn muốn, thích -u username and -p PID
.
Và trong khi top
đang làm việc f, nó sẽ hiển thị một danh sách các tùy chọn bạn muốn hiển thị ở top
đầu ra và các tham số được hiển thị sẽ được hiển thị bằng chữ cái VỐN và các tham số không hiển thị sẽ được hiển thị bằng chữ nhỏ.
Vì vậy, bằng cách nhập chữ cái trước tham số, bạn có thể bật hoặc tắt nó. Đối với ID tiến trình cha, bạn phải nhập bvà sau đó nhấn Enter, nó sẽ hiển thị PPID ở đầu ra hàng đầu.
htop
bạn có thể cấu hình PPID
cột.
grep PPid status |cut -f2
như trongtime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; tự hỏi nếu có một cái gì đó thậm chí nhanh hơn?