คำตอบ:
บรรทัดคำสั่ง:
ps -o ppid= -p 1111
ฟังก์ชั่น:
ppid () { ps -p ${1:-$$} -o ppid=; }
นามแฝง (ฟังก์ชั่นเป็นที่นิยม ):
alias ppid='ps -o ppid= -p'
สคริปต์:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
หากไม่มีการระบุ PID ให้กับฟังก์ชันหรือสคริปต์ค่าเริ่มต้นจะแสดง PPID ของกระบวนการปัจจุบัน
ในการใช้นามแฝงจะต้องระบุ PID
=
สัญญาณที่ไม่จำเป็นต้องมีอย่างน้อยใน OS X 10.8.2
นี่คือสิ่งหนึ่งที่ฉันเรียนรู้ลืมเรียนรู้ทำซ้ำ แต่มันมีประโยชน์ ธงของคำสั่ง pstree แสดงต้นไม้ที่มีใบไม้ที่ N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
parent pid อยู่ในตัวแปรเชลล์ PPID ดังนั้น
echo $PPID
$PPID
ไม่ได้แก้ปัญหาที่ฉันมีซึ่ง Google แนะนำหน้านี้เป็นคำตอบ
หากต้องการพิมพ์รหัสผู้ปกครอง ( PPID
) ของกระบวนการทั้งหมดให้ใช้คำสั่งนี้:
ps j
สำหรับขั้นตอนเดียวเพียงผ่าน PID ps j 1234
เช่น:
หากต้องการแยกเฉพาะค่าให้กรองตัวกรองผลลัพธ์ด้วยawk
เช่น:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
ในการแสดงรายการ PID ของผู้ปกครองทั้งหมดให้ใช้pstree
(ติดตั้งหากคุณไม่มี):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
ที่จะได้รับ PID echo $$
แม่ของกระบวนการปัจจุบันใช้
pstree
เป็นคนที่อร่อยที่สุดที่ฉันเคยเห็นที่นี่
ps j
ดีมากเพราะมีให้บริการในหลาย distros และสามารถเรียบเรียงได้ง่าย
อ่าน / proc / $ PID / สถานะ สามารถเขียนสคริปต์ได้อย่างง่ายดาย:
#! / bin / ดวลจุดโทษ P = $ 1 ถ้า [-z "$ P"]; แล้วก็ อ่านหน้า Fi cat / proc / "$ P" / สถานะ | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
คือทั้งหมดที่คุณต้องการ (เป็นเรื่องผิดปกติมากสำหรับเครื่องมือของ Unix ที่จะทำif [ -z ]; then read
สิ่งนี้)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
มือของฉันไม่ได้ใช้ในการพิมพ์
grep /some/file
บน Linux:
ps hoppid $thatprocess
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
ตัวอย่างที่ซับซ้อนขึ้นเล็กน้อยที่ตรวจสอบคำสั่งของพาเรนต์ที่เริ่มต้นกระบวนการปัจจุบันเปลี่ยน comm = เป็น cmd = เพื่อดูคำสั่งทั้งหมด
เรียกใช้กับตัวเลือกสิ่งที่คุณต้องการเช่นtop
-u username and -p PID
และในขณะที่top
กดใช้fงานจะแสดงรายการตัวเลือกที่คุณต้องการแสดงในtop
เอาต์พุตและพารามิเตอร์ที่แสดงจะแสดงเป็นตัวอักษรตัวใหญ่และพารามิเตอร์ที่แสดงหรือไม่แสดงจะแสดงเป็นตัวอักษรขนาดเล็ก
ดังนั้นโดยการป้อนตัวอักษรก่อนพารามิเตอร์คุณสามารถเปิดใช้งานหรือปิดการใช้งานมัน สำหรับ ID กระบวนการหลักที่คุณต้องป้อนbแล้วกดEnterมันจะแสดง PPID ในเอาต์พุตสูงสุด
htop
คุณสามารถกำหนดค่าPPID
คอลัมน์
grep PPid status |cut -f2
เหมือนในtime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; สงสัยว่ามีบางสิ่งที่เร็วขึ้น?