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

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

7
มีการใช้เธรดเป็นกระบวนการบน Linux หรือไม่
ฉันจะอ่านหนังสือเล่มนี้การเขียนโปรแกรม Linux ขั้นสูงโดย Mark Mitchell, Jeffrey Oldham และ Alex Samuel มันมาจากปี 2001 เก่าไปหน่อย แต่ฉันคิดว่ามันค่อนข้างดี แต่อย่างใด อย่างไรก็ตามฉันมาถึงจุดที่มันแตกต่างจากสิ่งที่ Linux ของฉันผลิตในการส่งออกเปลือก บนหน้า 92 (116 ในตัวแสดง) บทที่ 4.5 การใช้งานเธรด GNU / Linux เริ่มต้นด้วยย่อหน้าที่มีคำสั่งนี้: การติดตั้งเธรด POSIX บน GNU / Linux แตกต่างจากการใช้เธรดในระบบที่คล้ายกับ UNIX อื่น ๆ ในวิธีการที่สำคัญ: บน GNU / Linux เธรดจะถูกใช้เป็นกระบวนการ ดูเหมือนว่าจะเป็นจุดสำคัญและจะแสดงในภายหลังด้วยรหัส C ผลลัพธ์ในหนังสือเล่มนี้คือ: main thread …

5
ทำไม SIGINT ถึงไม่แพร่กระจายไปยังกระบวนการลูกเมื่อส่งไปยังกระบวนการแม่
ด้วยกระบวนการเชลล์ (เช่นsh) และกระบวนการลูก (เช่นcat) ฉันจะจำลองพฤติกรรมของCtrl+ Cโดยใช้ ID กระบวนการของเชลล์ได้อย่างไร นี่คือสิ่งที่ฉันได้ลอง: วิ่งshแล้วcat: [user@host ~]$ sh sh-4.3$ cat test test ส่งSIGINTไปcatจากสถานีอื่น: [user@host ~]$ kill -SIGINT $PID_OF_CAT cat รับสัญญาณและยกเลิก (ตามที่คาดไว้) ดูเหมือนว่าการส่งสัญญาณไปยังกระบวนการหลักนั้นไม่ทำงาน ทำไมสัญญาณไม่แพร่กระจายไปcatเมื่อถูกส่งไปยังกระบวนการแม่sh? สิ่งนี้ไม่ทำงาน: [user@host ~]$ kill -SIGINT $PID_OF_SH
62 shell  process  signals 

2
วงเล็บรอบกระบวนการหมายถึงอะไร
$ ps -Awwo pid,comm,args PID COMMAND COMMAND 1 init /sbin/init 2 kthreadd [kthreadd] 3 ksoftirqd/0 [ksoftirqd/0] 5 kworker/u:0 [kworker/u:0] 6 migration/0 [migration/0] 7 cpuset [cpuset] 8 khelper [khelper] 9 netns [netns] 10 sync_supers [sync_supers] 11 bdi-default [bdi-default] 12 kintegrityd [kintegrityd] 13 kblockd [kblockd] 14 kacpid [kacpid] 15 kacpi_notify [kacpi_notify] 16 …
62 process  ps 

3
`kill -0` ทำอะไร
ฉันเพิ่งเจอสิ่งนี้ในเชลล์สคริปต์ if ! kill -0 $(cat /path/to/file.pid); then ... do something ... fi อะไรkill -0 ...ทำอย่างไร
61 shell  process  kill 

2
ต้องการคำอธิบายเกี่ยวกับขนาดชุดที่อยู่อาศัย / ขนาดเสมือน
ฉันพบว่าpidstatจะเป็นเครื่องมือที่ดีในการตรวจสอบกระบวนการ ฉันต้องการคำนวณการใช้หน่วยความจำเฉลี่ยของกระบวนการเฉพาะ นี่คือตัวอย่างผลลัพธ์: 02:34:36 PM PID minflt/s majflt/s VSZ RSS %MEM Command 02:34:37 PM 7276 2.00 0.00 349212 210176 7.14 scalpel (นี่เป็นส่วนหนึ่งของผลลัพธ์จากpidstat -r -p 7276) ฉันควรใช้ข้อมูล Resident Set Size (RSS) หรือ Virtual Size (VSZ) เพื่อคำนวณปริมาณการใช้หน่วยความจำเฉลี่ยหรือไม่ ฉันได้อ่านบางสิ่งเกี่ยวกับ Wikipedia และในกระดานสนทนา แต่ฉันไม่แน่ใจว่าจะเข้าใจความแตกต่างอย่างสมบูรณ์ นอกจากนี้ดูเหมือนว่าไม่มีใครเชื่อถือได้ ดังนั้นฉันจะตรวจสอบกระบวนการเพื่อให้ได้ใช้หน่วยความจำได้อย่างไร ความช่วยเหลือใด ๆ ในเรื่องนี้จะเป็นประโยชน์
61 linux  process  memory 

7
ฉันจะทราบได้อย่างไรว่ากระบวนการใดบ้างที่ป้องกันไม่ให้ถอดอุปกรณ์ออก
บางครั้งฉันต้องการยกเลิกการต่อเชื่อมอุปกรณ์ usbด้วยumount /run/media/theDriveแต่ฉันได้รับdrive is busyข้อผิดพลาด ฉันจะทราบได้อย่างไรว่ากระบวนการหรือโปรแกรมใดกำลังใช้งานอุปกรณ์อยู่

3
ใช้ & (เครื่องหมายแอมเปอร์แซนด์) ในการวนซ้ำบรรทัดเดียว
ฉันใช้คำสั่งนี้เรียบร้อยแล้วซึ่งเปลี่ยนตัวแปรในไฟล์ปรับแต่งแล้วเรียกใช้งานสคริปต์ Python ภายในลูป: for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py; done เนื่องจากDoMyScript.pyตัวมันเองใช้เวลาประมาณ 30 วินาทีในการวิ่งก่อนที่จะยุติฉันต้องการผลักไสพวกมันให้เป็นแบ็คกราวน์ในขณะที่อีกอันสามารถเกิดใหม่ได้ ฉันได้ลองสิ่งที่ฉันคุ้นเคยแล้วโดยเพิ่มแอมเปอร์แซนด์เป็นด้านล่าง: for((i=114;i<=255;i+=1)); do echo $i > numbers.txt;python DoMyScript.py &; done อย่างไรก็ตามผลลัพธ์นี้มีข้อผิดพลาดด้านล่าง: -bash: ข้อผิดพลาดทางไวยากรณ์ใกล้โทเค็นที่ไม่คาดคิด `; '

5
ฉันจะรับรายการกระบวนการทั้งหมดใน Solaris ได้อย่างไรโดยไม่ต้องตัดทอน
มีวิธีในการสร้างรายการกระบวนการทั้งหมดใน Solaris โดยไม่ต้องตัดบรรทัด? ฉันได้ลองpsคำสั่งโดยมีอาร์กิวเมนต์ดังนี้ -f สร้างรายชื่อเต็ม (ดูด้านล่างสำหรับ ความสำคัญของคอลัมน์ในรายการเต็ม - Ing.) -l สร้างรายชื่อยาว (ดูด้านล่าง) ดังนั้นทั้งคู่ดูเหมือนจะทำในสิ่งที่ฉันต้องการอย่างไรก็ตามยิ่งไปกว่านั้นในหน้า man ps ฉันพบสิ่งนี้: args คำสั่งที่มีอาร์กิวเมนต์ทั้งหมดเป็น เชือก การใช้งานอาจตัดทอน ค่านี้เป็นความกว้างของฟิลด์ มันคือ ขึ้นอยู่กับการใช้งานไม่ว่าจะมี การตัดทอนเพิ่มเติมเกิดขึ้น มันคือ ไม่ระบุว่าเป็นสตริง แสดงเป็นรุ่นของการโต้แย้ง รายการตามที่มันถูกส่งผ่านไปยังคำสั่ง เมื่อมันเริ่มหรือเป็นรุ่นของ ข้อโต้แย้งเนื่องจากอาจมีการแก้ไข โดยแอปพลิเคชัน แอปพลิเคชันไม่สามารถ ขึ้นอยู่กับความสามารถในการปรับเปลี่ยน รายการข้อโต้แย้งและการดัดแปลง - tion ถูกแสดงในเอาต์พุตของ ps การใช้งาน Solaris จำกัด สตริงถึง 80 ไบต์ สตริงคือ รุ่นของรายการอาร์กิวเมนต์ตามเดิม ส่งไปยังคำสั่งเมื่อมันเริ่ม ซึ่งโดยทั่วไปบอกว่าผลลัพธ์จะถูกตัดทอนและไม่มีอะไรที่ฉันสามารถทำได้เกี่ยวกับมัน ดังนั้นฉันมาที่นี่ …
57 process  solaris  ps 

3
กระบวนการใดมี PID 0
ฉันกำลังมองหากระบวนการที่เริ่มต้นใน Linux ซึ่งมีกระบวนการ ID 0 ฉันรู้ว่าinitมี PID 1 ซึ่งเป็นกระบวนการแรกใน Linux มีกระบวนการใดที่มี PID 0 หรือไม่
55 process 

3
เหตุใดฉันจึงไม่สามารถชนระบบของฉันด้วยการวางระเบิดได้
เมื่อเร็ว ๆ นี้ฉันได้ขุดข้อมูลเกี่ยวกับกระบวนการใน GNU / Linux และฉันได้พบกับระเบิดที่น่าอับอาย: :(){ : | :& }; : ในทางทฤษฎีมันควรจะทำซ้ำตัวเองอย่างไม่มีที่สิ้นสุดจนกว่าระบบจะหมดทรัพยากร ... อย่างไรก็ตามฉันได้ลองทดสอบทั้งในCLI DebianและGUI Mint distro และดูเหมือนว่าจะไม่ส่งผลกระทบต่อระบบมากนัก ใช่มีกระบวนการมากมายที่ถูกสร้างขึ้นและหลังจากนั้นไม่นานฉันก็อ่านในข้อความคอนโซลเช่น: bash: fork: ทรัพยากรไม่สามารถใช้งานได้ชั่วคราว bash: fork: ลองอีกครั้ง: ไม่มีกระบวนการลูก แต่หลังจากเวลาผ่านไปกระบวนการทั้งหมดเพิ่งถูกฆ่าและทุกอย่างกลับสู่ปกติ ฉันได้อ่านว่าulimitตั้งค่าจำนวนสูงสุดของกระบวนการต่อผู้ใช้ แต่ฉันไม่สามารถยกมันได้ไกลนัก ระบบป้องกันการระเบิดจากส้อมคืออะไร? ทำไมมันไม่ทำซ้ำตัวเองจนกว่าทุกอย่างจะหยุดหรืออย่างน้อยก็ล่าช้ามาก? มีวิธีที่จะทำให้ระบบพังด้วยส้อมระเบิดหรือไม่?
54 linux  process  fork  ulimit 

7
ใครมีปลายอีกด้านของซ็อกเก็ตยูนิกซ์นี้?
ฉันต้องการตรวจสอบว่ากระบวนการใดมีส่วนอื่น ๆ ของซ็อกเก็ต UNIX โดยเฉพาะฉันถามเกี่ยวกับสิ่งที่สร้างขึ้นด้วยsocketpair()แม้ว่าปัญหาจะเหมือนกันสำหรับซ็อกเก็ต UNIX ใด ๆ ผมมีโปรแกรมparentที่สร้างsocketpair(AF_UNIX, SOCK_STREAM, 0, fds)และfork()s กระบวนการหลักปิดfds[1]และfds[0]ทำการสื่อสารต่อไป close(fds[0]); s=fds[1]เด็กไม่ตรงข้าม จากนั้นเด็กก็เข้าexec()ร่วมโปรแกรมอื่น, child1. ทั้งสองสามารถสื่อสารไปมาผ่านซ็อกเก็ตคู่นี้ได้ ตอนนี้ขอบอกว่าฉันรู้ว่าใครparentเป็น แต่ฉันต้องการที่จะคิดออกที่child1เป็น ฉันจะทำสิ่งนี้ได้อย่างไร มีเครื่องมือหลายอย่างที่ฉันจัดการ แต่ไม่มีใครสามารถบอกได้ว่ากระบวนการใดอยู่ที่ปลายอีกด้านของซ็อกเก็ต ฉันเหนื่อย: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix โดยพื้นฐานแล้วฉันสามารถเห็นซ็อกเก็ตทั้งสองและทุกอย่างเกี่ยวกับพวกเขา แต่ไม่สามารถบอกได้ว่าพวกเขาเชื่อมต่อกัน ฉันพยายามระบุว่า FD ใดในผู้ปกครองกำลังสื่อสารกับกระบวนการลูก

4
บันทึกกระบวนการทั้งหมดเพื่อดำเนินการต่อหลังจากรีบูต
ฉันพัฒนาอัลกอริทึมสำหรับปัญหาที่ค่อนข้างยากในวิชาคณิตศาสตร์ซึ่งน่าจะต้องใช้เวลาหลายเดือนกว่าจะเสร็จ เนื่องจากฉันมีทรัพยากร จำกัด เท่านั้นฉันจึงเริ่มใช้งานแล็ปท็อป Ubuntu 12.04 (x86) ของฉัน ตอนนี้ฉันต้องการติดตั้งการอัปเดตและรีสตาร์ทแล็ปท็อปจริง ๆ (ข้อความ "โปรดรีบูต" เป็นที่น่ารำคาญ) มีวิธีบันทึกกระบวนการทั้งหมดรวมถึงหน่วยความจำที่จัดสรรไว้เพื่อดำเนินการต่อหลังจากรีบูตหรือไม่ นี่คือข้อมูลบางอย่างเกี่ยวกับกระบวนการที่คุณอาจต้องการ โปรดสอบถามข้อมูลเพิ่มเติมหากจำเป็น ฉันเรียกกระบวนการในเทอร์มินัลด้วยคำสั่ง " ./binary > ./somefile &" หรือ "time ./binary> ./somefile &" ฉันจำไม่ได้จริงๆ กำลังพิมพ์ข้อมูลดีบักไปยัง std :: cerr (ไม่บ่อย) ปัจจุบันใช้งานประมาณ 600.0 kiB และถึงแม้ว่าจะเพิ่มขึ้น แต่ก็ไม่น่าจะเพิ่มขึ้นอย่างรวดเร็ว กระบวนการทำงานโดยมีลำดับความสำคัญตามปกติ เคอร์เนลคือ 3.2.0-26-generic-pae, cpu เป็น AMD, ระบบปฏิบัติการคือ Ubuntu 12.04 x86 มันทำงานตั้งแต่ 9 …
54 process  reboot 

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

4
จะแสดงรายการกระบวนการล็อกไฟล์ได้อย่างไร
การใช้flockหลายกระบวนการสามารถมีการล็อกแบบแบ่งใช้ในเวลาเดียวกันหรือกำลังรอรับล็อกการเขียน ฉันจะรับรายการกระบวนการเหล่านี้ได้อย่างไร นั่นคือสำหรับไฟล์ X ที่ให้มาโดยเฉพาะเพื่อค้นหา id กระบวนการของแต่ละกระบวนการที่มีอยู่หรือกำลังรอการล็อกไฟล์ มันจะเป็นการเริ่มต้นที่ดีมากแม้ว่าจะได้รับจำนวนกระบวนการที่รอการล็อก
51 files  process  lock 

4
ความแตกต่างระหว่าง pkill และ killall คืออะไร?
ฉันรู้ว่ามีกฎการกรองมากกว่าpkill killallคำถามของฉันคืออะไรความแตกต่างระหว่าง: pkill [signal] name และ killall [signal] name ฉันอ่านแล้วว่าkillallมีประสิทธิภาพมากกว่าและฆ่ากระบวนการและกระบวนการย่อยทั้งหมด (และเรียกซ้ำ) ที่ตรงกับnameโปรแกรม pkillไม่ทำเช่นนี้ด้วย?

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