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

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

3
ทำไมฉันถึงได้รับสถานะการออกที่แตกต่างกันสำหรับ ps | grep ในสคริปต์หรือไม่
ฉันใช้สคริปต์ด้านล่าง: #!/bin/bash ps ax | grep -q [v]arnish if [ $? -eq 0 ];then echo varnish is running... exit 0 else echo "Critical : varnish is not running " exit 2 fi ผลลัพธ์เป็นเหมือน :: [root@server ~]# sh -x check_varnish_pro.sh + ps ax + grep -q '[v]arnish' + '[' 0 -eq …

2
ทำไมซอมบี้จึงกำลังรอลูกอยู่
ฉันกำลังขุดผ่านแหล่งต่าง ๆ แต่ไม่สามารถหาคำอธิบายที่ดีเกี่ยวกับกายวิภาคของการเลี้ยงเด็กได้ นี่เป็นกรณีง่าย ๆ ของสิ่งที่ฉันต้องการจะเข้าใจ $ cat <( sleep 100 & wait ) & [1] 14247 $ ps ax -O pgid | grep $$ 12126 12126 S pts/17 00:00:00 bash 14248 12126 S pts/17 00:00:00 bash 14249 12126 S pts/17 00:00:00 sleep 100 14251 14250 S pts/17 00:00:00 grep …

2
sub-shell เป็นสิ่งเดียวกันกับ child-shell
: มีสองชื่อsubshellและเด็กเปลือก ใช่กระบวนการลูกจะเริ่มจากสิ่งนี้: sh -c 'echo "Hello"' ( echo "hello" ) echo "$(echo "hello") echo "hello" | cat ทุกคนมีความเสมอภาคและใช้ชื่อเดียวกันหรือไม่? ทุกคนแบ่งปันคุณสมบัติเดียวกันหรือไม่ POSIX มีคำจำกัดความนี้ : สภาวะแวดล้อมการประมวลผลเชลล์ประกอบด้วย .... แต่ลิงค์สุดท้ายของย่อหน้าด้านบนมี: สภาพแวดล้อม subshell จะต้องสร้างขึ้นซ้ำกับสภาพแวดล้อมของเชลล์ยกเว้นกับดักสัญญาณที่ไม่ได้ถูกละเว้นจะถูกตั้งค่าเป็นการกระทำเริ่มต้น และพิเศษ: การทดแทนคำสั่งคำสั่งที่จัดกลุ่มด้วยวงเล็บและรายการแบบอะซิงโครนัสจะต้องถูกดำเนินการในสภาพแวดล้อมย่อย นอกจากนี้แต่ละคำสั่งของไปป์ไลน์แบบหลายคำสั่งอยู่ในสภาพแวดล้อม subshell .... sh -c 'echo "Hello"'ไม่ได้รวมอยู่ที่นั่นควรที่จะเรียกว่า subshell ยัง?

3
หยุดกระบวนการโดยไม่ฆ่ามัน
ดังนั้นฉันจึงมีโปรแกรมถาวรที่ทำงานอยู่เบื้องหลัง การฆ่ามันเพียงแค่ทำให้มันเริ่มต้นใหม่ด้วย PID ที่แตกต่างกัน ฉันต้องการที่จะระงับ (ทำให้นอนโดยไม่ฆ่ามัน) kill -9 ทำสิ่งนี้หรือไม่ ถ้าไม่ควรทำอย่างไร?
11 process  kill 

3
เชลล์ดำเนินการโปรแกรมอย่างไร
หากฉันรวบรวมโปรแกรมโดยใช้ gcc และลองเรียกใช้งานจาก bash shell อะไรคือลำดับขั้นตอนที่แน่นอนตามด้วย bash เพื่อเรียกใช้งานมัน ฉันรู้fork(), execve(), loader, dynamic linker(และสิ่งอื่น ๆ ) มีส่วนร่วม แต่คนที่สามารถให้ลำดับขั้นตอนอย่างและบางส่วนอ้างอิงการอ่านที่เหมาะสม? แก้ไข: จากคำตอบดูเหมือนว่าคำถามอาจบ่งบอกถึงความเป็นไปได้มากมาย ฉันต้องการแคบลงเป็นกรณีง่ายๆ: (test.c เพียงพิมพ์ Hello world) $ gcc test.c -o test $ ./test สิ่งที่จะเป็นขั้นตอนในกรณีข้างต้น ( ./test) โดยเฉพาะที่เกี่ยวข้องกับโปรแกรมเริ่มต้นทุบตีในกระบวนการเด็กบางอย่างที่ทำโหลดเชื่อมโยง ฯลฯ ?

2
โดยไม่ใช้บรรทัดคำสั่งเครือข่ายใน linux จะรู้รายชื่อพอร์ตที่เปิดและกระบวนการที่เป็นเจ้าของได้อย่างไร
ฉันต้องการทราบว่าพอร์ตใดบ้างที่ใช้ในกระบวนการที่ฝังตัวในลินุกซ์ เนื่องจากเป็น Embedded-linux แบบเรียบง่ายจึงไม่มีบรรทัดคำสั่งเครือข่ายเช่น netstat, lsof (มีเพียงบรรทัดคำสั่งพื้นฐานเช่น cat, cp, echo ฯลฯ เท่านั้น) วิธีแก้ปัญหาบางส่วนดูเหมือนจะใช้บรรทัดคำสั่ง "cat / proc / net / tcp" และ "cat / proc / net / udp" อย่างไรก็ตามฉันไม่แน่ใจว่ารายการที่พิมพ์จากบรรทัดคำสั่งเหล่านั้นแสดงพอร์ตทั้งหมดที่ใช้งานอยู่และรายการไม่ได้แสดงว่ากระบวนการใดถูกผูกไว้กับพอร์ตที่แน่นอน ความคิดเห็นใด ๆ ที่จะได้รับการชื่นชม

2
มันหมายความว่าอย่างไรเมื่อกระบวนการ“ เวลา” หยุดทำงานด้านบน
ฉันจะดูว่าทำไมเราถึงได้รับการแจ้งเตือนการแลกเปลี่ยนที่สำคัญและฉันจะพบสิ่งต่อไปนี้: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP COMMAND 14683 user1 30 10 16.0g 772m 744 S 0.3 0.3 277:24.87 6.5g MATLAB 14576 user1 30 10 8125m 1.1g 736 S 0.3 0.4 261:16.73 4.1g MATLAB โดยที่คอลัมน์ TIME + ถูกตรึงสำหรับกระบวนการเหล่านั้น คำถามของฉันคือในข้างต้นสิ่งนี้หมายความว่าอย่างไร ตามที่ฉันเข้าใจเวลาหยุดทำงานหมายความว่าเป็นกระบวนการที่หยุดอยู่ชั่วคราว / ไม่ได้รับการประมวลผลโดย CPU อย่างไรก็ตามตัวอย่างข้างต้นแสดงให้เห็นถึงการใช้งาน …
11 process  cpu  swap  top  htop 

2
ฉันจะติดตามไฟล์ประมวลผลที่สร้างโดยผู้ใช้ของฉันบน Linux ได้อย่างไร
ใช้ Linux ฉันต้องการติดตามไฟล์ที่เรียกใช้งานในชื่อของฉันรวมถึงบรรทัดคำสั่งทั้งหมด (ในทางปฏิบัติทุก ๆ exec * () ทำในฐานะผู้ใช้ของฉันเอง) ควรมีโปรแกรมที่ฉันไม่ได้ควบคุมเพื่อจัดการงานเพื่อดำเนินการโปรแกรมที่ฉันผ่าน แต่ฉันต้องการให้แน่ใจว่ามันทำเช่นนั้นและตัวเลือกที่ใช้ โปรแกรมที่ฉันไม่ควบคุมนั้นดูถูกและดูเหมือนว่าจะเปลี่ยนพฤติกรรมขึ้นอยู่กับชื่อของโปรแกรมที่ควรจะเรียกใช้งานดังนั้นฉันจึงไม่สามารถส่งผ่านเชลล์สคริปต์ที่จะบันทึกข้อมูลและเรียกใช้งานจริง โปรแกรม. เป็นไปได้หรือไม่ที่ฉันจะได้รับแจ้งให้ทราบถึงการดำเนินการทั้งหมด * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * …

5
เป็นไปได้ที่จะได้รับ SMS / ข้อความแจ้งเตือนเมื่อกระบวนการสิ้นสุดลงหรือถูกฆ่า?
มีสคริปต์ที่จะส่งอีเมลเมื่อกระบวนการเซิร์ฟเวอร์เสร็จสิ้น อย่างไรก็ตามฉันไม่ต้องการตรวจสอบอีเมลของฉันบ่อย ๆ เพียงเพื่อดูว่างานเสร็จหรือไม่ ดังนั้นฉันต้องการรับข้อความ SMS คำถามของฉันคล้ายกับคำถามนี้เพียงแค่แลกเปลี่ยน SMS กับ "อีเมล" ที่เกิดขึ้นทั้งหมด: มีโปรแกรมที่สามารถส่งอีเมลแจ้งเตือนเมื่อกระบวนการเสร็จสิ้นหรือไม่? คุณนึกถึงวิธีแก้ปัญหา / แอพ / สคริปต์ / อะไรก็ตามที่จะช่วยให้ส่ง SMS เมื่องานเสร็จ (หรือสิ้นสุดก่อนกำหนด)

4
วิธีการฆ่ากระบวนการที่ไม่สามารถฆ่าได้โดยไม่ต้องรีบูตเครื่อง?
มี 5 กระบวนการที่ไม่สามารถฆ่าได้kill -9 $PIDและการดำเนินการcat /proc/$PID/cmdlineจะหยุดเซสชันปัจจุบัน บางทีพวกมันเป็นกระบวนการซอมบี้ การดำเนินการps -ef or htopจะหยุดเซสชันปัจจุบัน แต่topและps -eทำงานได้ดี ดังนั้นดูเหมือนว่ามีปัญหาสองประการที่ระบบไฟล์ไม่ตอบสนอง นี่เป็นเครื่องจักรที่ใช้งานจริงที่ใช้งานเครื่องเสมือนดังนั้นการรีบูตจึงไม่ใช่ตัวเลือก รหัสกระบวนการต่อไปนี้ไม่ทำงาน: 16181 16765 5985 7427 7547 พาเรนต์ของกระบวนการเหล่านี้เริ่มต้น ├─collectd(16765)─┬─{collectd}(16776) │ ├─{collectd}(16777) │ ├─{collectd}(16778) │ ├─{collectd}(16779) │ ├─{collectd}(16780) │ └─{collectd}(16781) ├─collectd(28642)───{collectd}(28650) ├─collectd(29868)─┬─{collectd}(29873) │ ├─{collectd}(29874) │ ├─{collectd}(29875) │ └─{collectd}(29876) และหนึ่งในกระบวนการ qemu ไม่ทำงาน |-qemu-system-x86(16181)-+-{qemu-system-x86}(16232) | |-{qemu-system-x86}(16238) | |-{qemu-system-x86}(16803) | …

10
เป็นวิธีการตรวจสอบว่ากระบวนการกำลังทำงานอยู่ในพื้นหลัง (และข้ามการดำเนินการใหม่ตามนั้นหรือไม่)
ฉันสามารถสร้างบรรทัดคำสั่ง bash ที่รันเฉพาะคำสั่งบางอย่างได้หรือไม่หากกระบวนการยังไม่ได้ทำงาน (อยู่เบื้องหลัง) ฉันจะตรวจสอบได้อย่างไร * หากคำสั่งทำงานอยู่แล้ว (ดังนั้นฉันสามารถเพิ่มคำสั่งถัดไปด้วย&&ในระหว่างพวกเขาดังนั้นคนต่อไปจะดำเนินการเฉพาะถ้าคนแรกเป็นจริง) *: ทดสอบกำหนดค้นหาค้นพบ
11 bash  shell  process 


3
ทำไม I / O ไม่หยุดชะงัก
เหตุผลเบื้องหลังทำให้ I / O ไม่สามารถขัดจังหวะได้อย่างไร อะไรจะเป็นผลลบหากกระบวนการจัดการ I / O ได้รับอนุญาตให้จัดการสัญญาณ
11 process  io 

4
ในทุบตีอะไรคือผลกระทบด้านลบที่อาจเกิดขึ้นจากการหยุดกระบวนการด้วย control-z ชั่วคราว?
เมื่อใช้ bash เราสามารถหยุดกระบวนการชั่วคราวcontrol-zได้ อย่างไรก็ตามมีสถานการณ์ทั่วไปหรือแนวทางปฏิบัติที่ควรระวังว่ากระบวนการใดจะไม่ทำงานได้ดีเมื่อหยุดชั่วคราว สถานการณ์เฉพาะของฉันคือการสร้างไฟล์ tar ที่ใช้เวลานานกว่าที่คาดไว้ ฉันต้องการหยุดมันชั่วคราวเพื่อวางไว้ในพื้นหลัง แต่ตัดสินใจไม่ทำ แน่นอนว่าคำถามของฉันไม่เฉพาะเจาะจงกับน้ำมันดิน แต่ฉันหวังว่าจะเข้าใจคุณลักษณะการหยุดชั่วคราวในการทุบตีที่ดีขึ้นเล็กน้อยเช่นเดียวกับสิ่งที่จะทำให้กระบวนการตอบสนองได้ไม่ดีต่อการหยุดชั่วคราว

2
วิธีตรวจสอบขีด จำกัด ใดเกิน (กระบวนการถูกยกเลิกเนื่องจาก ulimit)
สมมติว่ากระบวนการทำงานในสภาพแวดล้อมที่มีตัวคั่น: ( ulimit ... -v ... -t ... -x 0 ... ./program ) โปรแกรมถูกยกเลิก อาจมีสาเหตุหลายประการ: เกินขีด จำกัด หน่วยความจำ / เวลา / ไฟล์; segfault ง่าย ๆ หรือการเลิกจ้างปกติด้วยรหัสส่งคืน 0 จะตรวจสอบสาเหตุของการยกเลิกโปรแกรมได้อย่างไรโดยไม่ต้องแก้ไขโปรแกรม PS ฉันหมายถึง "เมื่อได้รับไบนารี" บางทีเสื้อคลุม (ptrace-ing ฯลฯ ) อาจช่วยได้บ้าง?

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