ฉันต้องการที่จะได้รับรายชื่อของกระบวนการทั้งหมดที่ลงมา (เช่นเด็ก, แกรนด์เด็ก, ฯลฯ ) $pid
จาก นี่เป็นวิธีที่ง่ายที่สุดที่ฉันเคยทำ:
pstree -p $pid | tr "\n" " " |sed "s/[^0-9]/ /g" |sed "s/\s\s*/ /g"
มีคำสั่งหรือวิธีที่ง่ายกว่าในการรับรายการทั้งหมดของกระบวนการสืบทอดทั้งหมดหรือไม่?
'\n'
ตัวคั่นและ' '
ตัวคั่น) กรณีใช้งานจริง: a)สคริปต์ daemonizer ที่ฉันเขียนออกมาจากลัทธิโซคิสต์บริสุทธิ์ (โดยเฉพาะฟังก์ชั่น "หยุด" จะต้องจัดการกับต้นไม้ใด ๆ ของกระบวนการที่กระบวนการ daemonized วางไข่); และb)สคริปต์หมดเวลาที่จะฆ่าทุกกระบวนการที่หมดเวลาที่จัดการเพื่อสร้าง
kill
กรณีการใช้งานของคุณทำให้ฉันคิดว่าคุณกำลังมองหากลุ่มกระบวนการและการโต้แย้งในทางลบต่อ ดูunix.stackexchange.com/questions/9480/… , unix.stackexchange.com/questions/50555/…
ps ax -opid,ppid,pgrp,cmd
ฉันเห็นว่ามีหลายกระบวนการที่ใช้ร่วมกับpgrp
ทรีย่อยที่แน่นอนที่ฉันต้องการฆ่า (นอกจากนี้ฉันไม่สามารถดูsetpgrp
รายการที่ใดก็ได้ในแพ็คเกจเสถียร debian: packages.debian.org/ … )