เมื่อสคริปต์ถูกเรียกใช้จากพรอมต์คำสั่งเชลล์จะวางไข่ subprocess สำหรับสคริปต์นั้น ฉันต้องการแสดงความสัมพันธ์ระหว่างกระบวนการระดับเทอร์มินัลและลูก ๆ ของมันที่ใช้ps
ในการแสดงผลแบบต้นไม้
ฉันจะทำสิ่งนี้ได้อย่างไร
สิ่งที่ฉันได้ลองมาแล้ว
ไฟล์: script.sh
#!/bin/bash
ps -f -p$1
จากนั้นฉันจะเรียกใช้สคริปต์จากบรรทัดคำสั่งที่ส่งผ่านใน id กระบวนการของเทอร์มินัลเชลล์:
$ ./script.sh $$
สิ่งที่ฉันต้องการคืออะไรแบบนี้
- กระบวนการเชลล์ระดับบนสุด (เทอร์มินัล)
- ./script.sh
- กระบวนการสำหรับ
ps
คำสั่งเอง
USER PID [..]
ubuntu 123 -bash
ubuntu 1234 \_ bash ./script.sh
ubuntu 12345 \_ ps auxf
สิ่งที่ฉันได้รับคือ:
PID TTY STAT TIME COMMAND
14492 pts/24 Ss 0:00 -bash
@muru ฉันพยายาม
—
the_velour_fog
pstree
และไม่สามารถสร้างผลผลิตที่มีความหมายได้ฉันคิดว่าpstree $$
เพิ่งสร้างbash--pstree
ไม่ได้ตรงตามที่ฉันต้องการ
ไม่ใช่สิ่งที่คุณกำลังมองหา? คุณได้แทนที่สคริปต์และ
—
muru
ps
ดังนั้นสิ่งอื่นที่คุณคาดหวังให้เห็นยกเว้นpstree
อะไรอีก
@muru สิทธิ์ของคุณในทางเทคนิคสิ่งที่ฉันต้องการ แต่น้อยเกินไป เช่นคุณจะทราบได้อย่างไรว่ากระบวนการใดที่คุณกำลังดูอยู่โดยไม่มี PID เช่น ps แสดงให้เห็นว่าเป็นตารางผลลัพธ์
—
the_velour_fog
pstree -p $$
? หรือถ้าคุณต้องการให้บรรทัดคำสั่งแสดงมากขึ้นpstree -pa $$
มากขึ้น หรือถ้าคุณต้องการที่จะแสดงกระบวนการผู้ปกครองทั้งหมดขึ้นpstree -psa $$
ไป
pstree
?