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

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

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 ได้รับผลกระทบทั้งคู่ …

2
เรียกใช้กระบวนการในฐานะผู้ใช้ / กลุ่มอื่น (ในสคริปต์ init.d)
ฉันกำลังแก้ไขสคริปต์ init.d สคริปต์ init.d จะเรียกใช้สคริปต์อรรถประโยชน์ซึ่งจะเรียกใช้กระบวนการ จากสคริปต์ทุบตีฉันจะทำให้กระบวนการหลักเป็นผู้ใช้และกลุ่มได้อย่างไร

4
วิธีดูการใช้หน่วยความจำแบบสรุปของกลุ่มคำสั่ง (แทนกระบวนการ)
มีวิธีการจัดกลุ่มกระบวนการที่คล้ายกันเมื่อใช้เครื่องมือเช่น top / htop หรือไม่? บางครั้งฉันแค่อยากรู้ว่าสิ่งที่กินหน่วยความจำของฉันและบางโปรแกรม (เบราว์เซอร์ส่วนใหญ่) ใช้กระบวนการหลายกระบวนการซึ่งทำให้ยากต่อการอ่านจำนวน RAM ที่ใช้งานจริง จนถึงตอนนี้ฉันก็มาพร้อมกับสิ่งที่: ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc
10 process  top 

1
PCB บน Linux อยู่ที่ไหน
PCB หรือบล็อกการควบคุมกระบวนการถูกกำหนดเช่นนี้ใน Wikipedia Process Control Block (PCB หรือที่เรียกว่า Task Controlling Block, [1] โครงสร้างงานหรือ Switchframe) เป็นโครงสร้างข้อมูลในเคอร์เนลระบบปฏิบัติการที่มีข้อมูลที่จำเป็นในการจัดการกระบวนการเฉพาะ PCB คือ "การสำแดงของกระบวนการในระบบปฏิบัติการ และหน้าที่ของมันคือ: Process identification data Processor state data Process control data ดังนั้น PCB ของกระบวนการสามารถพบได้ที่ไหน?
10 linux  process  cpu 

1
การทำความเข้าใจรูปแบบเวลาที่ผ่านไปของ ps สำหรับกระบวนการที่ใช้เวลานาน
ฉันใช้psคำสั่งเป็นส่วนหนึ่งของแบบฝึกหัดเพื่อระบุกระบวนการที่ทำงานนานกว่าขีด จำกัด ที่กำหนด ฉันใช้แม่แบบต่อไปนี้เพื่อให้ได้เวลาที่ผ่านไปสำหรับคำสั่งกระบวนการทราบ: ps -eo etime,command | grep <something to identify a process> | grep -v grep | awk '{print $1}' ฉันสังเกตเห็นว่ากระบวนการทำงานสั้นค่า etime (เวลาที่ผ่านไป) ใช้รูปแบบminutes:secondsและจากนี้ฉันสามารถกำหนดระยะเวลาที่กระบวนการทำงานได้อย่างง่ายดาย สำหรับกระบวนการที่ใช้เวลานานมาก (วันยาว) ฉันไม่เข้าใจรูปแบบ ฉันมีกระบวนการเซิร์ฟเวอร์ MySQL ที่htopแสดงว่าทำงานเป็นเวลา 126 ชั่วโมง การดำเนินการให้ฉันมีค่าps -eo etime,command | grep mysql | grep -v grep | awk '{print $1}'9-03:35:32 ฉันเดาได้ดีที่สุดว่านี่หมายถึงบางสิ่ง 9 …
10 process  time  ps 

4
ระบบการเข้าคิวง่าย ๆ ?
ด้วยพีซีแบบ Commodity เราต้องการใช้มันเพื่อทำงานบางอย่างในพื้นหลังตลอดเวลา โดยทั่วไปเราต้องการมีคำสั่งเช่น: add-task *insert command here* list-tasks remove-task(s) งานที่เพิ่มเข้ามาควรอยู่ในคิวและดำเนินการทีละรายการในพื้นหลัง (ยังคงทำงานหลังจากออกจากระบบของเชลล์) มีสคริปต์ / โปรแกรมง่าย ๆ ที่ทำสิ่งนี้?

2
จะทำให้การอ่านและเขียนไฟล์เดียวกันในไปป์ไลน์เดียวกันเสมอ“ ล้มเหลว” ได้อย่างไร?
ว่าฉันมีสคริปต์ต่อไปนี้: #!/bin/bash for i in $(seq 1000) do cp /etc/passwd tmp cat tmp | head -1 | head -1 | head -1 > tmp #this is the key line cat tmp done ในบรรทัดสำคัญฉันอ่านและเขียนไฟล์เดียวกันtmpซึ่งบางครั้งล้มเหลว (ฉันอ่านมันเป็นเพราะสภาพการแข่งขันเพราะกระบวนการในไปป์ไลน์ถูกดำเนินการแบบขนานซึ่งฉันไม่เข้าใจว่าทำไม - แต่ละคนheadจำเป็นต้องใช้ข้อมูลจากข้อมูลก่อนหน้านี้ใช่ไหมนี่ไม่ใช่คำถามหลักของฉัน แต่คุณสามารถตอบได้เช่นกัน) เมื่อฉันเรียกใช้สคริปต์มันจะส่งออกประมาณ 200 บรรทัด มีวิธีใดบ้างที่ฉันสามารถบังคับให้สคริปต์นี้ให้ผลลัพธ์เสมอ 0 บรรทัด (ดังนั้นการเปลี่ยนเส้นทาง I / O ไปยังจะtmpถูกเตรียมไว้ก่อนเสมอและข้อมูลจะถูกทำลายเสมอ) เพื่อความชัดเจนฉันหมายถึงการเปลี่ยนการตั้งค่าระบบไม่ใช่สคริปต์นี้ ขอบคุณสำหรับความคิดของคุณ

2
กระบวนการสามารถมีเจ้าของได้หรือไม่? มันหมายความว่าอะไร?
เราสามารถกำหนดเจ้าของกระบวนการโดยใช้psคำสั่ง นี่หมายความว่าผู้ใช้รายอื่นไม่สามารถเรียกใช้ / ฆ่า / ดำเนินการต่อได้หรือไม่
9 linux  process  users 

2
สัญญาณที่รอการอนุมัติคืออะไร?
เมื่อดูที่ขีด จำกัด ของกระบวนการทำงานฉันเห็น Max pending signals 15725 นี่คืออะไร? ฉันจะกำหนดมูลค่าที่เหมาะสมสำหรับบริการไม่ว่างได้อย่างไร โดยทั่วไปแล้วฉันไม่สามารถค้นหาหน้าเว็บที่อธิบายว่าแต่ละขีด จำกัด คืออะไร บางไฟล์เป็นแบบอธิบายตัวเอง (ไฟล์เปิดสูงสุด) บางไฟล์อาจน้อยกว่า (ขนาดสูงสุด msgqueue)

2
ฉันจะบอกได้อย่างไรเมื่อกระบวนการเขียนไฟล์เสร็จแล้ว?
ฉันมีกระบวนการที่เกิดจากเปลือกหอย มีการทำงานเป็นกระบวนการพื้นหลังและการส่งออกไปยังฐานข้อมูลไฟล์ CSV /tmpใน ฉันจะบอกได้อย่างไรว่ากระบวนการพื้นหลังเสร็จสมบูรณ์ (เสร็จสิ้น / เลิก) หรือเมื่อการล็อคไฟล์ CSV ถูกปิด ฉันวางแผนที่จะ FTP ไฟล์ไปยังโฮสต์อื่นเมื่อมีการเขียน แต่ฉันต้องการไฟล์ที่สมบูรณ์ก่อนที่จะเริ่มการถ่ายโอนไฟล์
9 files  process  lock 

1
เหตุใดตำแหน่งของตัวแปรสภาพแวดล้อมจึงแตกต่างกันมาก
อ่านหนังสือแฮ็ค: ศิลปะแห่งการเอารัดเอาเปรียบโดย Jon Erickson ฉันพยายามประมาณที่อยู่ของตัวแปรสภาพแวดล้อมSHELLCODEเพื่อใช้ประโยชน์จากโปรแกรม ทุกครั้งที่ฉันวิ่งgetenv("SHELLCODE");ไปหาที่ตั้งผลลัพธ์จะแตกต่างกันโดยสิ้นเชิง แยกจากเปลือกของฉัน: > for i in $(seq 10); do ./a.out SHELLCODE; done SHELLCODE is at 0xff9ab3a3 SHELLCODE is at 0xffcdb3a3 SHELLCODE is at 0xffb9a3a3 SHELLCODE is at 0xffa743a3 SHELLCODE is at 0xffdb43a3 SHELLCODE is at 0xfff683a3 SHELLCODE is at 0xffef03a3 SHELLCODE is at 0xffc1c3a3 SHELLCODE …

5
กระบวนการเทียบกับ (เธรด)
โดยทั่วไปแล้วแอปพลิเคชัน Linux จะแยก exec (ด้วย execve ()) แต่แอปพลิเคชัน Java และ Apache MPM บางตัวใช้เธรด หากการฟอร์กใช้ fork + exec เพื่อวางไข่กระบวนการเวอร์ชันขั้นสูงสำหรับเธรดคืออะไร JVM หรือ Worker MPM มีเธรดอย่างไร
9 process  fork  thread 

3
Harddrive I / O ต่อ Pid
มีวิธีใดบ้างที่จะเห็นดิสก์ I / O ต่อ pid / โปรเซส? Monitorix แสดงต่อไปนี้และแก้ไขให้ฉันถ้าฉันผิด แต่ดูเหมือนว่าฮาร์ดไดรฟ์กำลังทำให้ระบบช้าลง: อัปเดต # 1 บนยอดดูเหมือนจะให้ภาพรวมที่ดีเหนือทุกสิ่ง ฉันอาจถามคุณว่าการรอคอยที่ทำเครื่องหมายสีแดงหมายถึงอะไร นั่นเป็นการรอจากดิสก์ I / O หรือไม่

3
เรียกใช้คำสั่ง / สคริปต์ที่ตัดการเชื่อมต่อจากเทอร์มินัลการควบคุมหรือไม่?
ฉันกำลังตรวจสอบพฤติกรรมของสคริปต์ที่ปกติแล้วจะทำงานเป็นกระบวนการอัตโนมัติ (เช่น cron, Jenkins) สคริปต์สามารถ (ในที่สุด) เรียกใช้คำสั่งที่ทำงานแตกต่างกัน (ค้นหาอินพุตผู้ใช้) เมื่อรันแบบโต้ตอบ; ตัวอย่างเช่นpatchจะถามว่าจะทำอย่างไรกับแพทช์ที่กลับด้านและsvnจะขอรหัสผ่าน แต่ฉันต้องดูว่าจะเกิดอะไรขึ้นเมื่อพวกเขาทำงานแบบไม่โต้ตอบ การโน้มน้าวใจpatchว่าการไม่โต้ตอบนั้นค่อนข้างง่าย ฉันแค่ต้องการเปลี่ยนเส้นทางstdoutให้เป็นคนที่ไม่ใช่ tty: $ </dev/null > >(cat) /path/to/myscript --args อย่างไรก็ตามsvnจะเชื่อมต่อกับเทอร์มินัลการควบคุมหากมีอยู่ การแก้ไขสคริปต์เพื่อส่งผ่าน--non-interactiveไม่ใช่ตัวเลือกจริงๆเนื่องจากนี่มาจากหลายระดับลึกและมันยากที่จะแน่ใจว่าฉันได้พบการเรียกใช้ทุกครั้ง มีวิธีการเรียกใช้สคริปต์ / คำสั่งแบบไม่โต้ตอบโดยไม่มีสถานีควบคุม (เพื่อที่/dev/ttyไม่มีอยู่)? ฉันต้องการ stdout / stderr ยังคงไปที่สถานีของฉัน (ฉันพบคำถามเรียกใช้สคริปต์ในเชลล์แบบไม่โต้ตอบแต่คำตอบสำหรับเรื่องความแตกต่างระหว่าง cron และสภาพแวดล้อมของผู้ใช้; ฉันได้กำจัดความแตกต่างทั้งหมดยกเว้นการไม่โต้ตอบ)

1
เชิงลบของกระบวนการทำงานที่มีลำดับความสำคัญตามเวลาจริงหรือไม่
มีข้อเสียของกระบวนการทำงานที่มีลำดับความสำคัญตามเวลาจริง ( chrt -f 99) หรือไม่? สมมติฐานของฉันคือว่าสิ่งนี้รวมกับ affinity จะช่วยให้มั่นใจว่ากระบวนการใด ๆ ของฉัน pre-emption มีน้อยและดังนั้นใด ๆ ที่กระวนกระวายใจ เกี่ยวข้องกับกระวนกระวายใจ (เคอร์เนล: 2.6.16 / 3.0)

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