คำถามติดแท็ก process-groups

5
เรียกใช้หลายคำสั่งและฆ่าพวกเขาเป็นหนึ่งในทุบตี
ฉันต้องการเรียกใช้หลายคำสั่ง (โปรเซส) ในเชลล์เดียว พวกเขาทั้งหมดมีผลผลิตต่อเนื่องของตัวเองและไม่หยุด เล่นกับพวกเขาในการแบ่งพื้นหลัง-Ctrl Cผมอยากจะเรียกพวกเขาเป็นกระบวนการเดียวที่จะสามารถที่จะหยุดทั้งหมดของพวกเขาด้วย (subshell อาจจะ?) -CtrlC โดยเฉพาะฉันต้องการเรียกใช้การทดสอบหน่วยด้วยmocha(โหมดดู) เรียกใช้เซิร์ฟเวอร์และเรียกใช้การประมวลผลไฟล์ล่วงหน้า (โหมดดู) และดูผลลัพธ์ของแต่ละรายการในหน้าต่างเทอร์มินัลเดียว โดยทั่วไปฉันต้องการหลีกเลี่ยงการใช้งานนักวิ่ง ฉันสามารถรับรู้ได้โดยเรียกใช้กระบวนการในพื้นหลัง ( &) แต่จากนั้นฉันต้องใส่พวกเขาลงในเบื้องหน้าเพื่อหยุดพวกเขา ฉันต้องการที่จะมีกระบวนการห่อหุ้มพวกเขาและเมื่อฉันหยุดกระบวนการมันจะหยุด 'ลูก' ของมัน

1
kill 0 ทำอะไรได้จริง [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Unix & Linux Stack Exchange ปิดให้บริการใน2 ปีที่ผ่านมา ในman page, มันบอกว่า: kill [ -s signal | -p ] [ -a ] [ -- ] pid ... pid... Specify the list of processes that kill should signal. Each pid can be one of five things: 0 All …

1
เป็นไปได้หรือไม่ที่จะรับ ID กลุ่มกระบวนการจาก / proc
ใน " /programming/13038143/how-to-get-pids-in-one-process-group-in-linux-os " ผมเห็นคำตอบทั้งหมดกล่าวขวัญและไม่มีการกล่าวขวัญps/proc "ps" ดูเหมือนจะไม่พกพาได้มาก (รุ่น Android และ Busybox คาดว่าจะมีข้อโต้แย้งที่แตกต่างกัน) และฉันต้องการแสดง pids ด้วย pgids ด้วยเครื่องมือที่ง่ายและพกพาได้ ใน /proc/.../status ฉันเห็นTgid:(ID กลุ่มเธรด), Gid:(รหัสกลุ่มเพื่อความปลอดภัยไม่ใช่สำหรับการจัดกลุ่มกระบวนการร่วมกัน) แต่ไม่ใช่PGid:... อะไรคือวิธีการอื่น ๆpsของการได้รับ pgid จาก pid?

1
เหตุใด PGID ของลูกของฉันจึงไม่ประมวลผล PID ของผู้ปกครอง
ดังนั้นฉันจึงอ่านทุกที่ว่าคำสั่งนี้ควรยุติกระบวนการลูกทั้งหมดของกระบวนการหลัก: kill -- -$$ การใช้ ID เชิงลบพร้อมกับคำสั่ง kill อ้างอิง PGID และจากตัวอย่างที่ฉันเห็นมันปรากฏว่า PGID ของกระบวนการลูกควรเป็น PID ของผู้ปกครอง แต่ไม่ใช่กรณีในระบบของฉัน ในระบบของฉัน PGID ของเด็กนั้นเหมือนกับ PGID ของสคริปต์หลักซึ่งกลายเป็นทุบตี เกิดอะไรขึ้นที่นี่? ตัวอย่างผิดหรือระบบของฉันตั้งค่าแตกต่างกันหรือไม่? สิ่งที่ฉันต้องทำให้สำเร็จคือการยุติกระบวนการลูกโดยไม่ต้องยุติพาเรนต์ดังนั้นฉันไม่ต้องการส่งสัญญาณการฆ่าไปยัง PGID ที่พาเรนต์เข้ามา

1
เชลล์แบบโต้ตอบควรทำอย่างไรในกลุ่มกระบวนการที่ถูกโยงถึง
(โพสต์ซ้ำในยูนิกซ์ตามคำแนะนำใน/programming/13718394/what-should-interactive-shells-do-in-orphaned-process-group ) คำถามสั้น ๆ คือเชลล์ควรทำอย่างไรถ้าอยู่ในกลุ่มกระบวนการที่ถูกโยงถึงที่ไม่มี tty อยู่? แต่ฉันแนะนำให้อ่านคำถามยาว ๆ เพราะมันสนุก นี่คือวิธีที่สนุกและน่าตื่นเต้นในการเปลี่ยนแล็ปท็อปของคุณให้เป็นเครื่องทำพื้นที่พกพาโดยใช้เปลือกที่คุณชื่นชอบ (ยกเว้นว่าคุณเป็นหนึ่งในพวก tcsh weirdos): #include <unistd.h> int main(void) { if (fork() == 0) { execl("/bin/bash", "/bin/bash", NULL); } return 0; } ทำให้ bash ตรึง CPU ที่ 100% zsh และปลาทำแบบเดียวกันในขณะที่ ksh และ tcsh พึมพำอะไรบางอย่างเกี่ยวกับการควบคุมงานและจากนั้นก็กระดูกงูซึ่งดีกว่าเล็กน้อย แต่ไม่มาก โอ้และเป็นผู้กระทำความผิดที่ไม่เชื่อเรื่องพระเจ้าแพลตฟอร์ม: OS X และ Linux ได้รับผลกระทบทั้งคู่ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.