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

กระบวนการเป็นตัวอย่างของโปรแกรมคอมพิวเตอร์ที่กำลังดำเนินการ

4
หลังจาก fork () เด็กจะเริ่มต้นการดำเนินการที่ใด
ฉันพยายามเรียนรู้การเขียนโปรแกรม UNIX และพบคำถามเกี่ยวกับ fork () ฉันเข้าใจว่า fork () สร้างกระบวนการที่เหมือนกันของกระบวนการที่กำลังทำงานอยู่ แต่มันเริ่มต้นที่ไหน ตัวอย่างเช่นถ้าฉันมีรหัส int main (int argc, char **argv) { int retval; printf ("This is most definitely the parent process\n"); fflush (stdout); retval = fork (); printf ("Which process printed this?\n"); return (EXIT_SUCCESS); } ผลลัพธ์คือ: นี่เป็นกระบวนการสำหรับผู้ปกครองแน่นอนที่สุดกระบวนการ ใดที่พิมพ์ออกมานี้ กระบวนการใดพิมพ์ ฉันคิดว่ามันfork()สร้างกระบวนการเดียวกันดังนั้นตอนแรกฉันก็เลยว่าในโปรแกรมนั้นการfork()โทรจะถูกเรียกซ้ำตลอดไป ฉันเดาว่ากระบวนการใหม่ที่สร้างขึ้นจากการfork()เริ่มต้นหลังจากการfork()โทร? ถ้าฉันเพิ่มรหัสต่อไปนี้เพื่อแยกความแตกต่างระหว่างกระบวนการหลักและลูก if …
22 process  c  fork  api 

1
กระบวนการนีซและลูก
ใครสามารถบอกฉันว่าอะไรคือความสัมพันธ์ระหว่างniceระดับที่ระบุและกระบวนการลูก? ตัวอย่างเช่นถ้าฉันมีค่าเริ่มต้นniceของ0และฉันเริ่มต้นสคริปต์ด้วยnice 5ซึ่งจะเริ่มต้นกระบวนการที่เด็กบางคน (ในกรณีนี้ประมาณ 20 ในแบบคู่ขนาน) สิ่งที่เป็นสิ่งที่ดีของกระบวนการที่เด็กหรือไม่
22 linux  process  nice 

4
หยุดชั่วคราว / กลับสู่กระบวนการเดียวไปยัง / จากดิสก์
ในบางครั้งเราอยากจะระงับกระบวนการที่ใช้หน่วยความจำมากในเซิร์ฟเวอร์ Ubuntu และ OS X ของเราเพื่อเพิ่ม RAM ชั่วคราวสำหรับงานอื่น หากเราทุกคนกังวลเกี่ยวกับการใช้งาน CPU Ctrl-Zก็จะง่าย อย่างไรก็ตามเราจำเป็นต้องสามารถเพิ่ม RAM (โดยการเขียนลงดิสก์) แล้วเริ่มกระบวนการใหม่ (disk -> RAM) หรือกล่าวอีกนัยหนึ่งว่า "hibernate" เป็นกระบวนการเดียว เบาะแสใด ๆ เกี่ยวกับวิธีการทำเช่นนี้? (โดยเฉพาะจาก CLI) ขอบคุณ


3
Linux บอกเธรดนอกเหนือจากกระบวนการย่อยได้อย่างไร
task_structลินุกซ์ไม่จริงความแตกต่างระหว่างกระบวนการและหัวข้อและการดำเนินการทั้งสองเป็นโครงสร้างข้อมูล ดังนั้นลินุกซ์ให้อะไรกับบางโปรแกรมเพื่อบอกเธรดของกระบวนการจากกระบวนการลูก? ตัวอย่างเช่นมีวิธีดูรายละเอียดของเธรดทั้งหมดที่กระบวนการมีใน Linux หรือไม่? ขอบคุณ
21 linux  process  thread 

6
แจ้งเตือนเมื่อกระบวนการทำงานเสร็จสิ้น
มีคำถามและคำตอบเล็กน้อยที่นี่เกี่ยวกับการแจ้งเตือนเมื่อกระบวนการเสร็จสมบูรณ์ / ออก ( 1 , 2 ) - แต่ทั้งหมดนี้ถือว่าผู้ใช้ออกกระบวนการดังกล่าวด้วยตนเองและสามารถเขียนสคริปต์ด้วยการแจ้งเตือนที่สร้างขึ้นใน สคริปต์ที่ควบคุมหรือไพพ์กระบวนการในการแจ้งเตือนบางประเภท สถานการณ์ของฉันคือฉันต้องการได้รับการแจ้งเตือนถึงความสมบูรณ์ / ออกของกระบวนการที่ผู้ใช้ของฉันไม่เริ่มต้น คือฉันกำลังประมวลผลไฟล์วิดีโอจำนวนมากบนเซิร์ฟเวอร์ Ubuntu 12.04 LTS การดำเนินการบางอย่างกับไฟล์เหล่านี้ใช้เวลานานมากดังนั้นฉันจึงต้องการการแจ้งเตือนบางอย่าง (อีเมลจะดีมาก) เมื่อไฟล์ใดไฟล์หนึ่งเสร็จสิ้น พวกเขาใช้เวลานานมากในการทำสิ่งนี้บนพื้นฐานแบบครั้งเดียวด้วยตนเองบนพื้นฐานของ PIT จะดีอย่างสมบูรณ์แบบ เพื่อให้ข้อมูลเพิ่มเติม - สมมติว่าฉันกำลังประมวลผลไฟล์ขนาดใหญ่โดยเฉพาะและฉันเห็นว่ามีการพัฒนาไปสู่สคริปต์ FFMPEG กระบวนการเองเป็นสคริปต์ไพ ธ อน (ซึ่งค่อนข้างซับซ้อนและไม่ได้เขียนด้วยตัวเองและบางอย่าง ฉันไม่ต้องการแก้ไข - แม้ว่ามันจะเป็นวิธีการตรรกะแรก) ฉันจินตนาการว่าการออกคำสั่งหรือสคริปต์ด้วย PID ของการเรียกใช้สคริปต์ python ที่กล่าวถึงเป็นข้อโต้แย้งและเมื่อกระบวนการที่ใช้ PID นั้นไม่ได้ทำงานอีกต่อไปสคริปต์แจ้งเตือนก็จะทำสิ่งนั้น ความคิดใด ๆ
21 bash  process  top  htop 

5
ฉันจะค้นหากระบวนการที่ส่งข้อมูลไปยังพอร์ตเฉพาะได้อย่างไร
ฉันมีบริการรักษาพอร์ตที่เปิดอยู่ ฉันได้รับข้อมูลมาโดยที่ฉันไม่ได้คาดหวังและไม่ต้องการที่จะรับและฉันพยายามระบุแหล่งที่มาของข้อมูลนี้ ดังนั้นฉันจะค้นหากระบวนการที่ส่งข้อมูลไปยังพอร์ตเฉพาะได้อย่างไรเมื่อเทียบกับกระบวนการที่กำลังรับฟัง

3
จำกัด การใช้แบนด์วิดท์อินเทอร์เน็ตของเชลล์เฉพาะ
ฉันต้องการอัปเดต linux ของฉันในเชลล์หนึ่ง แต่โดยค่าเริ่มต้น wget หรือ axel ใน updater ใช้แบนด์วิดท์ทั้งหมด ฉันจะ จำกัด ความเร็วในกระสุนนี้ได้อย่างไร? ฉันต้องการเชลล์อื่น ๆ เพื่อให้มีการแบ่งปันที่ยุติธรรมและ จำกัด ทุกอย่างในเชลล์นั้น - เหมือนกับ proxy! ฉันใช้ Zsh และ Arch Linux คำถามนี้มุ่งเน้นไปที่การแก้ปัญหาทั้งกระบวนการหรือทั่วทั้งเซสชัน ดูวิธี จำกัด แบนด์วิดท์เครือข่าย สำหรับโซลูชันทั้งระบบหรือคอนเทนเนอร์ทั่วบน Linux

3
ผู้ใช้รายอื่นสามารถดูอาร์กิวเมนต์ที่ส่งไปยังคำสั่งได้หรือไม่?
ถ้าฉันเรียกคำสั่งที่มีข้อโต้แย้งเช่นนั้น: bob@bob-pc:~$ command -arg1 -arg2 ... ผู้ใช้รายอื่นสามารถดูอาร์กิวเมนต์ที่ส่งไปยังคำสั่งได้หรือไม่

2
ฉันจะดูกระบวนการที่กำลังทำงานอยู่ได้อย่างไร?
ฉันใช้ Ubuntu Server 10.10 และฉันต้องการดูว่ากระบวนการใดทำงานอยู่ ฉันรู้ว่า PostgreSQL กำลังทำงานบนเครื่องของฉัน แต่ฉันไม่สามารถเห็นมันด้วยคำสั่งtopหรือpsดังนั้นฉันคิดว่าพวกเขาจะไม่แสดงกระบวนการทำงานทั้งหมด มีคำสั่งอื่นที่จะแสดงกระบวนการทำงานทั้งหมดหรือมีพารามิเตอร์อื่น ๆ ที่ฉันสามารถใช้กับtopหรือpsสำหรับสิ่งนี้

4
ฉันจะฆ่าเธรดเฉพาะของกระบวนการได้อย่างไร
$ ps -e -T | grep myp | grep -v grep 797 797 ? 00:00:00 myp 797 798 ? 00:00:00 myp 797 799 ? 00:00:00 myp 797 800 ? 00:00:00 myp สิ่งนี้แสดงกระบวนการที่mypมี PID = 797 และสี่เธรดที่มี SPID ต่างกัน ฉันจะฆ่าเธรดเฉพาะของกระบวนการโดยไม่ฆ่ากระบวนการทั้งหมดได้อย่างไร ฉันเข้าใจว่าอาจเป็นไปไม่ได้เลยในบางกรณีเมื่อมีการอ้างอิงที่ร้ายแรงในเธรดนั้น แต่มันเป็นไปได้ในกรณีใด ๆ ? ใช่แล้วเป็นอย่างไร ฉันพยายามkill 799แล้วกระบวนการก็สิ้นสุดลง ตอนนี้ฉันไม่แน่ใจว่าเป็นเพราะมีการพึ่งพาที่ทำให้mypล้มเหลวโดยไม่มีกระบวนการ800หรือเพราะการฆ่านั้นง่ายไม่สามารถฆ่าแต่ละกระบวนการได้

2
เมื่อกระบวนการจะไปสู่สถานะ 'D'
ฉันใช้ "ชื่อโฮสต์ Linux 2.6.28-15-generic # 49-Ubuntu SMP อ. 18 ส.ค. 18:40:08 UTC 2009 i686 GNU / Linux" เครื่องไคลเอนต์ทั้งหมดจะใช้ Thin-client ฉันจะใช้แล็ปท็อปของฉันในการทำงานและฉันจะติดตั้งโฮมไดเร็กตอรี่จากเซิร์ฟเวอร์ไปยังแล็ปท็อปของฉัน ถ้าฉันเปิด Firefox ในแล็ปท็อปของฉันหน้าต่าง Firefox จะไม่เปิดเพราะกระบวนการอยู่ในสถานะ 'D' และผู้ใช้อื่น ๆ ทั้งหมดเครื่องวางสายและกระบวนการล็อกอยู่ในสถานะ 'D' ps ajx | grep firefox 1 6187 4313 4313 ? -1 D< 1030 3:16 /usr/lib/firefox-3.5b4pre/firefox-3.5 7610 7622 7621 7610 pts/3 …
21 linux  process  io 

4
ฉันจะรอโปรแกรมที่เริ่มต้นในเชลล์อื่นได้อย่างไร
ฉันมีโปรแกรมที่ทำงานจำนวนมาก (ใช้เวลาประมาณ 4-5 ชั่วโมง) ที่เริ่มทำงานโดย cron เมื่อข้อมูลทั้งหมดที่ใช้งานได้นั้นพร้อมใช้งาน บางครั้งเมื่อฉันรอให้เสร็จฉันต้องการให้โปรแกรมอื่น (โต้ตอบ) เริ่มทำงานเมื่อเสร็จสิ้น การรอสายดูดี แต่จะรอให้เด็ก ๆ

4
ฆ่าขั้นตอนผู้ใช้ทั้งหมดใน Ubuntu หรือไม่
วิธีการฆ่ากระบวนการทั้งหมดของผู้ใช้คนหนึ่ง? เมื่อฉันทำให้ps auxฉันได้รับรายการของกระบวนการที่มีผู้ใช้หลายคนและฉันต้องการที่จะฆ่าทุกขั้นตอนของผู้ใช้name1! คำสั่งให้ทำใน Ubuntu คืออะไร?

2
ความสามารถในการพกพาของลิงค์ไฟล์อธิบาย
ฉันสงสัยอยู่เสมอ แต่ไม่เคยใช้เวลาในการค้นหาดังนั้นฉันจะทำตอนนี้ - การใช้งานแบบพกพาแสดงได้อย่างไรจากที่นี่/proc/$$/fd/$Nหรือ /dev/fd/$Nฉันเข้าใจการรับประกัน POSIX /dev/null, /dev/tty, and /dev/console (แม้ว่าฉันจะพบว่าในวันอื่น ๆ หลังจากอ่านความคิดเห็นในคำตอบนี้ )แต่แล้วคนอื่น ๆ เหล่านี้ล่ะ? เท่าที่ฉันสามารถบอกได้ว่าพวกเขาเป็นเรื่องธรรมดา แต่ในระบบใดที่ฉันไม่สามารถคาดหวังว่าจะพบพวกเขา ทำไมจะไม่ล่ะ? มีแนวโน้มที่จะพบหนึ่งมากกว่าอื่น ๆ ? พวกเขาจะแสดงเหมือนแอตทริบิวต์เสมอหรือไม่ ฉันมักจะใช้อุปกรณ์เหล่านี้อย่างกว้างขวางในทุกรูปแบบและฉันอยากจะรู้ว่าถ้ามีโอกาสฉันจะลองสั้น ๆ ควรเข้าใจคำถามข้างต้นเป็นเพียงสิ่งที่ฉันคิดว่าฉันอยากรู้ แต่เนื่องจากฉันต้องถามตั้งแต่แรกฉันอาจไม่ทราบดีที่สุดในเรื่องนี้และพวกเขาไม่ควรพิจารณาข้อกำหนดที่เข้มงวดสำหรับ คำตอบ. กรุณาช่วยฉันด้วยถ้าทำได้โปรดเถอะ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.