Score:0

การเขียนสคริปต์ที่ใช้ PID เป็นอาร์กิวเมนต์และพิมพ์ PID ของหลานและหลานทั้งหมด

ธง pr

สวัสดี ฉันกำลังพยายามเขียนสคริปต์ที่ใช้อาร์กิวเมนต์ของ PID และพิมพ์หลานและหลานของ PID ทั้งหมด ไม่ใช่ลูกหลาน ตัวอย่าง:

$ พิมพ์พวกเขา 3545
3546
3548
3666

สิ่งที่ฉันพยายามทำ:

ps --ppid $1

แต่มันไม่ให้ ID แก่ฉัน ฉันเคยอ่านที่ไหนสักแห่งเกี่ยวกับ pstree แต่ฉันไม่ค่อยแน่ใจว่าจะใช้มันอย่างถูกต้องอย่างไรเพื่อให้บรรลุเป้าหมายของฉัน คำแนะนำใด ๆ จะได้รับการชื่นชมอย่างมาก ขอบคุณ !

Nitsan Asraf avatar
pr flag
@bac0n ขอบคุณมาก !
BeastOfCaerbannog avatar
ca flag
@24601 OP ต้องการทราบ PID ของโปรแกรมที่อาจทำงานบน Ubuntu นอกจากนี้ พวกเขากำลังขอโซลูชันที่เกี่ยวข้องกับ Bash โดยพิจารณาจากแท็กที่ใช้ เนื่องจาก Bash เป็นส่วนใหญ่ของ Ubuntu คำถามของ Bash จึงอยู่ในหัวข้อและได้รับการสนับสนุนอย่างดีที่นี่ ดังนั้นคำถามจึงอยู่ในหัวข้ออย่างสมบูรณ์และไม่ควรปิด อ่าน [meta post](https://meta.askubuntu.com/questions/13807/are-bash-shell-scripting-questions-on-topic) เกี่ยวกับคำถามที่เกี่ยวข้องกับ Bash ด้วย
24601 avatar
in flag
@BeastOfCaerbannog OP บอกว่าพวกเขาใช้ Ubuntu ที่ไหน สามารถถามคำถามทั่วไปเกี่ยวกับการเขียนสคริปต์ได้ที่[stackoverflow](https://meta.stackoverflow.com/questions/340130/where-to-ask-the-simplest-programming-questions)
Nitsan Asraf avatar
pr flag
@ 24601 ฉันกำลังถามใน AskUbuntu ดังนั้นคุณจึงสามารถสันนิษฐานได้ว่าฉันใช้ Ubuntu หากคุณไม่แน่ใจ คุณสามารถถามได้แทนที่จะสันนิษฐานว่าไม่เกี่ยวข้องกัน
BeastOfCaerbannog avatar
ca flag
@ 24601 การไม่กล่าวถึงอย่างชัดเจนว่าพวกเขาใช้ Ubuntu ไม่ใช่เหตุผลที่หนักแน่นเพียงพอสำหรับการพิจารณาคำถามนอกหัวข้อ เป็นความจริงที่สามารถถามคำถาม Bash ใน SO ได้เช่นกัน แต่สามารถถามได้ที่นี่ (และ Unix & Linux และ Super User ด้วย!) เรายังมีป้ายสำหรับคำถาม Bash อย่างที่คุณเห็น ความคิดเห็นของเบคอนให้คำตอบที่ดี ใช้ได้อย่างสมบูรณ์แบบสำหรับ Ubuntu เหมือนกับคำถาม แม้ว่าจะไม่ได้กล่าวถึง Ubuntu อย่างชัดเจนก็ตาม
24601 avatar
in flag
@BeastOfCaerbannog ฉันไม่ได้ตั้งใจจะโต้แย้งประเด็นนี้ยกเว้นเพื่อจะบอกว่าคำถามนั้นเฉพาะเจาะจงกับระบบปฏิบัติการ แน่นอนว่ามันอยู่ในหัวข้อ มิฉะนั้นคำถามทั่วไปซึ่งไม่ใช่เฉพาะระบบปฏิบัติการอูบุนตูสามารถจัดการได้อย่างเพียงพอใน stackoverflow ข้อเท็จจริงที่มีคนตอบในความคิดเห็นไม่ใช่ข้อพิสูจน์เพียงอย่างเดียวว่าป้อน Q อย่างถูกต้องใน AU หากคุณมีปัญหากับสิ่งนั้น ให้เพิ่มในเมตา ซึ่งเป็นตำแหน่งที่ถูกต้องในการดำเนินการดังกล่าว
BeastOfCaerbannog avatar
ca flag
@24601 เมตาโพสต์ที่ฉันลิงก์ไว้ในความคิดเห็นก่อนหน้า ซึ่งฉันจะลิงก์อีกครั้งที่นี่ ชี้แจงว่าคำถามทั่วไปเกี่ยวกับสคริปต์ โดยเฉพาะอย่างยิ่ง Bash-scripting ไม่ได้อยู่นอกหัวข้อที่นี่ โพสต์เมตา: [มีคำถามเกี่ยวกับสคริปต์ทุบตี/เชลล์ในหัวข้อหรือไม่](https://meta.askubuntu.com/questions/13807/are-bash-shell-scripting-questions-on-topic)
BeastOfCaerbannog avatar
ca flag
@ 24601 มีความเกี่ยวข้องด้วย: [เราจะบอกได้อย่างไรว่าคำถามเป็นของที่นี่ หรืออยู่ที่ stackoverflow/superuser?](https://meta.askubuntu.com/questions/47/how-do-we-tell-if-a -question-belongs-here-or-ค่อนข้างที่-stackoverflow-superuser) และ [คำถามในหัวข้อเฉพาะของ Ubuntu ไม่ใช่แค่เฉพาะ Ubuntu หรือไม่](https://meta.askubuntu.com/questions/14523 / are-not-only-ubuntu-เฉพาะคำถามในหัวข้อ)
24601 avatar
in flag
@BeastOfCaerbannog ฉันไม่ได้เปลี่ยนมุมมองตามการอ้างอิงนั้น ขอโทษด้วย
terdon avatar
cn flag
@24601 ขอบเขตของไซต์นี้คือ _อะไรก็ได้ที่สามารถทำได้บนเครื่อง Ubuntu_ นี่คือหัวข้อ 100% คำถามทั่วไปที่ไม่ใช่คำถามเฉพาะของ Ubuntu เป็นคำถามส่วนใหญ่ที่เราจัดการที่นี่ มีบางสิ่งที่เฉพาะเจาะจงมากสำหรับอูบุนตู นอกจากนี้ ส่วนใหญ่รวมถึงคำถามนี้จะไม่อยู่ในหัวข้อเกี่ยวกับ [ดังนั้น] ซึ่งเกี่ยวข้องกับคำถามการเขียนโปรแกรมเท่านั้น โปรดสละเวลาเพื่อทำความเข้าใจขอบเขตของไซต์ก่อนที่จะแนะนำว่าสิ่งต่าง ๆ นอกประเด็น
waltinator avatar
it flag
คุณอ่าน `man ps` หรือไม่ คุณได้รับ `--ppid` มาจากไหน `ps -o PPID $1` เพื่อรับพาเรนต์ของ `$1`
A. Herlas avatar
bz flag
คุณกำลังมองหา `pstree -p $pid` จากนั้นคุณต้องหาวิธีดึงข้อมูลออกมา
Score:1
ธง it

นี่คือการออกแบบภาษาเมตา (ไม่ได้ใช้งาน ไม่ได้ทดสอบ ต้องถือว่าใช้ไม่ได้) การเขียนโค้ดจริงถือเป็นแบบฝึกหัดสำหรับนักเรียน

ใน ทุบตีสคริปต์ (เริ่มต้นด้วย #!/bin/bash):

กำหนด ก ปิ๊ด ฟังก์ชันใช้ PID เป็นพารามิเตอร์ และส่งคืนพาเรนต์ของ PID

กำหนด ก เด็ก ฟังก์ชันรับ PID เป็นพารามิเตอร์ และส่งคืนรายการที่คั่นด้วยช่องว่าง ("พิด พิด พิด " สังเกตช่องว่างต่อท้าย) ของ PID ที่มีพารามิเตอร์ PID เป็นพาเรนต์ ตรวจสอบ PID ทั้งหมดบนระบบโดยใช้ ปิ๊ด การทำงาน.

startPID=$1
childlist="$(เด็ก $startPID)"
gchildlist=""
ggchildlist=""
สำหรับเด็กใน $childlist ; ทำ
    gchildlist="$gchildlist $(เด็ก $kid)"
เสร็จแล้ว
สำหรับเด็กใน $gchildlist ; ทำ
    ggchildlist="$ggchildlist $(เด็ก $kid)"
เสร็จแล้ว
echo "แกรนด์ : $gchildlist"
echo "Ggrand: $ggchildlist"

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา