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

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

1
ดำเนินการคำสั่ง Nohup พร้อมอินพุต
ใน UNIX ฉันมีกระบวนการที่ฉันต้องการรันโดยใช้ nohup อย่างไรก็ตามกระบวนการนี้ในบางจุดจะรอที่พรอมต์ที่ฉันต้องป้อนyesหรือnoเพื่อดำเนินการต่อ จนถึงตอนนี้ใน UNIX ฉันได้ทำสิ่งต่อไปนี้: nohup myprocess <<EOF y EOF ดังนั้นฉันเริ่มกระบวนการ 'myprocess' โดยใช้ nohup และไปป์ในไฟล์ด้วย 'y' จากนั้นปิดไฟล์ บรรทัดข้างต้นเป็นคำสั่งที่แยกกันสามคำสั่งอย่างมีประสิทธิภาพ - เช่นฉันกด Enter บนบรรทัดแรกใน UNIX จากนั้นฉันจะได้รับพรอมต์เมื่อฉันป้อน 'y' จากนั้นกด Enter เพื่อพิมพ์ 'EOF' ในที่สุดและกดปุ่ม return อีกครั้ง ดังนั้นสิ่งนี้ทำงานได้อย่างสมบูรณ์แบบ แต่ปัญหาของฉันอยู่ด้านล่าง ฉันต้องการที่จะดำเนินการนี้ใน Perl แต่ฉันไม่แน่ใจว่าฉันสามารถรันคำสั่งนี้เพราะมันมีสามบรรทัด ฉันไม่รู้ว่าสิ่งต่อไปนี้จะได้ผลหรือไม่: my $startprocess = `nohup myprocess <<EOF & y EOF …
11 process  perl  nohup 

2
วิธีค้นหา tty ที่มีการดำเนินการ cmd“ scp” ที่เฉพาะเจาะจง
ฉันจะรู้ได้อย่างไรว่าใครรันคำสั่งเฉพาะและเทอร์มินัลใดที่ใช้ในการรัน ต้นฉบับ : ฉันจะรู้ได้อย่างไรว่าคำสั่งเฉพาะเจาะจงถูกเรียกใช้โดยใครและจะรู้เกี่ยวกับเทอร์มินัลของฉัน

2
ทำไม vfork () ตั้งใจที่จะใช้เมื่อกระบวนการลูกเรียก exec () หรือ exit () ทันทีหลังจากการสร้าง?
แนวคิดระบบปฏิบัติการและ APUE พูด ด้วย vfork () กระบวนการหลักถูกระงับและกระบวนการลูกใช้พื้นที่ที่อยู่ของพาเรนต์ เนื่องจาก vfork () ไม่ได้ใช้ copy-on-write ถ้ากระบวนการลูกเปลี่ยนแปลงหน้าใด ๆ ของพื้นที่ที่อยู่ของผู้ปกครองเพจที่ถูกแก้ไขจะปรากฏให้ผู้ปกครองเห็นได้เมื่อดำเนินการต่อ ดังนั้นvfork () ต้องใช้ด้วยความระมัดระวังเพื่อให้แน่ใจว่ากระบวนการลูกไม่ได้แก้ไขพื้นที่ที่อยู่ของผู้ปกครอง vfork () มีวัตถุประสงค์เพื่อใช้เมื่อกระบวนการลูกเรียกใช้ exec () หรือ exit () ทันทีหลังจากการสร้าง ฉันจะเข้าใจประโยคสุดท้ายได้อย่างไร เมื่อกระบวนการลูกสร้างโดยการvfork()โทรexec()ไม่ได้exec()แก้ไขพื้นที่ที่อยู่ของกระบวนการหลักโดยการโหลดโปรแกรมใหม่หรือไม่ เมื่อกระบวนการลูกที่สร้างโดยการvfork()โทรexit()ไม่ exit()ได้แก้ไขพื้นที่ที่อยู่ของกระบวนการหลักเมื่อยกเลิกการเป็นเด็ก? ฉันชอบลีนุกซ์ ขอบคุณ
11 linux  process  exec  exit  vfork 

2
ซอมบี้ในทุบตี
Bash ดูเหมือนจะไม่สร้างซอมบี้ ดูเหมือนว่ากระบวนการจะเก็บเกี่ยวได้ทันทีเมื่อถูกฆ่า ฉันสามารถทุบตีทำให้ซอมบี้ได้หรือไม่? ทำไมฉันถาม: ฉันต้องการที่จะสามารถฆ่ากระบวนการของเด็กได้อย่างปลอดภัยหรือปลอดภัยkill -9หากไม่ได้ตายภายในระยะเวลาหนึ่ง แต่ฉันไม่ต้องการเผลอทำกระบวนการที่ไม่ใช่กระบวนการลูกของฉันโดยไม่ตั้งใจ กระบวนการซอมบี้มักจะทำให้ง่ายและปลอดภัยต่อสภาพการแข่งขัน
11 bash  process 

1
จุดประสงค์ของไฟล์ / proc / pid / mountinfo คืออะไร
จุดประสงค์ของ/proc/pid/mountinfoไฟล์คืออะไร(เมื่อpidเป็น id กระบวนการตัวเลข) เท่าที่ฉันสามารถเห็นมันสะท้อนเนื้อหาของ/proc/mountsไฟล์ แต่มีข้อมูลเพิ่มเติม ไฟล์ดูเหมือนว่าจะยังคงเหมือนเดิมสำหรับกระบวนการทั้งหมด: diff สำหรับกระบวนการที่เลือกแบบสุ่มสองกระบวนการจะไม่ส่งคืนเอาต์พุต ( diff /proc/3833/mountinfo /proc/2349/mountinfo) โปรดทราบว่าฉันไม่ได้ถามสิ่งที่มันมี จากคำจำกัดความบนอินเทอร์เน็ตฉันเห็นว่า 'ไฟล์นี้มีข้อมูลเกี่ยวกับจุดเมานท์' ฉันถามว่าเหตุใดจึงมีอยู่ในไดเรกทอรีกระบวนการทุกอัน มันมีจุดประสงค์อะไร?
11 linux  mount  process  proc 

1
ประวัติกระบวนการในระบบ Unix / Linux
ฉันรู้ว่าps -eflแสดงกระบวนการทำงานบนระบบ * nix ฉันต้องการที่จะตรวจสอบประวัติของ (ที่ผ่านมา) กระบวนการที่ได้รับการทำงานบนเครื่องโดยเฉพาะอย่างยิ่งกับทุกข้อมูลที่psให้ (เช่น%CPU, %MEM) ฉันสามารถใช้โปรแกรมอรรถประโยชน์บรรทัดคำสั่งใดได้บ้างข้อมูลนี้จัดเก็บไว้ที่อื่นที่คล้ายกับ.bash_historyไฟล์
11 process  logs  ps 


2
กระบวนการสลีปได้รับเวลา CPU เดียวกันหรือไม่
กระบวนการบางอย่างใช้เวลาส่วนใหญ่ของ "ชีวิต" ของพวกเขาในsleepสถานะ Daemons เซิร์ฟเวอร์และผู้ฟังทั่วไปเป็นที่สนใจ ฉันสงสัยว่าพวกเขาใช้เวลา CPU เท่าเดิมในสถานะนั้นหรือไม่? ในบางสิ่งบางอย่างเช่นแล็ปท็อปของฉันมันจะไม่เหมาะที่สุด! ฉันจำได้ไม่ชัดเจนจากหลักสูตรระบบปฏิบัติการว่ามีวิธีการตั้งเวลาที่แตกต่างกัน ฉันสนใจที่จะหาข้อมูลเพิ่มเติมเกี่ยวกับกล่อง Linux (Debian) ปัจจุบันของฉัน ฉันจะหาข้อมูลเกี่ยวกับนโยบายการตั้งเวลาปัจจุบันได้อย่างไร ฉันสามารถเปลี่ยนพวกมันแบบไดนามิกได้หรือไม่? ด้วยแอป userland ที่น่ารัก
11 linux  debian  process 

3
หน่วยเวลาที่ strace ใช้คืออะไรเมื่อแสดงเวลาที่ใช้ใน syscalls
เมื่อใช้คำสั่งstraceกับการตั้งค่าสถานะ-Tฉันต้องการที่จะรู้ว่าหน่วยเวลาที่ใช้ในการแสดงเวลาที่ใช้ใน syscalls คืออะไร? ฉันคิดว่ามันควรจะเป็นในไม่กี่วินาที แต่ฉันไม่แน่ใจและดูเหมือนว่าจะถูกตัดออกจากคู่มือ

2
มัลแวร์ที่ไม่มีลวดลายทำงานบน linux อย่างไร
ฉันเข้าใจคำจำกัดความของมัลแวร์ไร้สาระ: รหัสที่เป็นอันตรายที่ไม่ได้ใช้ไฟล์ แต่มีอยู่ในหน่วยความจำเท่านั้น…โดยเฉพาะอย่างยิ่งรหัสที่เป็นอันตรายแบบไม่ใส่ข้อมูล ... ผนวกตัวเองเข้ากับกระบวนการที่ทำงานอยู่ในหน่วยความจำ ... ใครช่วยอธิบายหน่อยได้ไหมว่าการผนวกตัวเองเข้ากับกระบวนการที่ทำงานอยู่ในหน่วยความจำได้อย่างไร นอกจากนี้การป้องกัน / การทำให้แข็งตัวคืออะไร

2
แทนที่กระบวนการปัจจุบันด้วยกระบวนการ / กระบวนการลูก
ฉันมีโปรแกรมPที่คาดว่าจะได้รับ "สวัสดี" และส่งออก "ทำไม" ก่อนที่จะให้คุณสมบัติ คุณลักษณะนี้ใช้งานโดยโปรแกรมอื่นที่ไม่ทราบว่ามันเป็นมารยาททั่วไปในการเริ่มการสนทนากับ "Hello" ฉันจึงต้องการเขียน wrapper สำหรับPที่ทำงานเช่นนี้ (ไวยากรณ์ zsh): coproc P print -p Hello # Send Hello to P read -pr line # Read what P has to say [[ "$line" = "Why?" ]] && Replace current process with the coprocess. echo Could not get P's attention. …
10 shell  scripting  process  zsh 

1
เป็นไปได้หรือไม่ที่จะทราบถึงแหล่งที่มา (แอปพลิเคชั่น) ของคลิปบอร์ด
ฉันสังเกตเห็นว่าบางครั้งเนื้อหาคลิปบอร์ดไม่สามารถใช้งานได้หากแอปพลิเคชันต้นทาง (ที่คัดลอกเนื้อหามา) ถูกปิด นี่ทำให้ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะรู้ว่าแอปพลิเคชันต้นฉบับคืออะไร (เช่นอาจเป็น PID) ทำไม? หากแอปพลิเคชันต้นทางเป็นเทอร์มินัลฉันต้องการค้นหาไดเรกทอรีการทำงานของเทอร์มินัลในกรณีที่เนื้อหาที่คัดลอกเป็นพา ธ สัมพัทธ์เพื่อสร้างพา ธ แบบเต็มไปยังไฟล์ FYI ฉันกำลังใช้ xclip เพื่อกำหนดเนื้อหาของคลิปบอร์ดเช่น xclip -selection primary -t STRING -o 2> /dev/null
10 x11  process  clipboard  xclip 

2
พิมพ์ pids และชื่อของกระบวนการที่สร้างขึ้น
จากคำถามที่นี่ OP ต้องการโพลซ้ำ pid ของกระบวนการที่ใช้pidofในเชลล์สคริปต์ แน่นอนว่านี่ไม่มีประสิทธิภาพเนื่องจากกระบวนการใหม่จะต้องเริ่มต้นสำหรับpidofโปรแกรมหลายครั้งต่อวินาที (ฉันไม่รู้ว่านี่เป็นสาเหตุของ CPU spikes ในคำถาม แต่ดูเหมือนว่าจะเป็นไปได้) โดยปกติแล้วสิ่งรอบตัวในเชลล์สคริปต์คือการทำงานกับโปรแกรมเดี่ยวที่ส่งออกข้อมูลที่คุณต้องการstdoutแล้วทำการประมวลผลข้อความบางอย่างหากจำเป็น ในขณะที่สิ่งนี้เกี่ยวข้องกับโปรแกรมเพิ่มเติมที่จะทำงานพร้อมกัน แต่ก็มีแนวโน้มที่จะมี CPU น้อยลงเนื่องจากกระบวนการใหม่ไม่ได้ถูกสร้างขึ้นอย่างต่อเนื่องเพื่อจุดประสงค์ในการทำโพล ดังนั้นสำหรับคำถามข้างต้นโซลูชันหนึ่งอาจมีโปรแกรมบางตัวที่แสดงชื่อและ pids ของกระบวนการเมื่อสร้างขึ้น จากนั้นคุณสามารถทำสิ่งที่ชอบ: pids-names | grep some_program | cut -f 2 | while read pid; do process-pid "$pid" done ปัญหานี้คือว่ามันก่อให้เกิดคำถามพื้นฐานมากขึ้นวิธีการพิมพ์ชื่อและกระบวนการสามารถพิมพ์ในขณะที่พวกเขาถูกสร้างขึ้น? ฉันพบโปรแกรมที่เรียกว่าps-watcherแม้ว่าปัญหาของมันคือมันเป็นเพียงperlสคริปต์ที่ทำงานซ้ำ ๆpsดังนั้นมันจึงไม่สามารถแก้ปัญหาได้ อีกตัวเลือกหนึ่งคือการใช้งานซึ่งอาจจะทำงานหากเข้าสู่ระบบการประมวลผลโดยตรงผ่านทางauditd tail -fทางออกที่ดีที่สุดจะง่ายกว่าและพกพาได้มากกว่านี้ถึงแม้ว่าฉันจะยอมรับauditdโซลูชันถ้าเป็นตัวเลือกที่ดีที่สุด

2
ฉันจะสร้างกระบวนการที่ยากต่อการฆ่าได้อย่างไร
ฉันต้องการสร้างโปรแกรมที่ยากต่อการหยุด (แม้กระทั่งสำหรับผู้ดูแลระบบ) เมื่อมันเริ่มขึ้น (ด้วยสิทธิ์ของรูท) เมื่อเริ่มต้นกระบวนการควรเริ่มต้นเองต่อเมื่อเริ่มต้นจนกว่าจะขอให้หยุด กระบวนการหยุดควรใช้เวลาสักครู่ (เช่นควรมีราคาแพง) ฉันรู้ว่านี่อาจฟังดูเหมือนซอฟต์แวร์ที่เป็นอันตราย แต่ฉันต้องการด้วยเหตุผลของแท้ ฉันต้องการเรียกใช้ตัวบล็อกไซต์บนแล็ปท็อปของฉัน (ซึ่งฉันเป็นผู้ดูแล) และฉันต้องการทำให้มันยากสำหรับตัวฉันที่จะหยุดพวกเขา ทางออกที่ฉันคิดว่าเป็นดังต่อไปนี้ - กระบวนการควรรันด้วยชื่อแตกต่างกันในแต่ละครั้งที่รันดังนั้นฉันไม่สามารถคาดการณ์ชื่อกระบวนการและฆ่ามันได้ กระบวนการจะบันทึกตัวเองใน /etc/rc5.d เมื่อปิดเครื่อง กระบวนการนี้จะเข้ารหัสชื่อโดยใช้เลขศูนย์ในบางตำแหน่งที่ทราบ กระบวนการหยุดจะต้องใช้ bruteforce เพื่อกู้คืนชื่อโปรแกรมและฆ่ามัน ฉันต้องการค้นหาวิธีแก้ปัญหาที่ดีสำหรับภารกิจนี้
10 security  process  kill 

2
แต่ละกระบวนการมีไดเรกทอรีปัจจุบันหมายความว่าอย่างไร
ฉันกำลังอ่าน "สภาพแวดล้อมการเขียนโปรแกรม Unix" แต่ฉันไม่เข้าใจไดเรกทอรีแนวคิดปัจจุบันของกระบวนการ แต่ละกระบวนการมีไดเรกทอรีปัจจุบันและชื่อไฟล์ทั้งหมดจะถูกสันนิษฐานโดยปริยายว่าเริ่มต้นด้วยชื่อของไดเรกทอรีนั้นเว้นแต่ว่าพวกเขาจะเริ่มต้นโดยตรงด้วยเครื่องหมายทับ หมายความว่าทุกกระบวนการมีการลงชื่อเข้าใช้ในไดเรกทอรีใดที่ถูกสร้างขึ้น? ตัวอย่างเช่นหากโปรแกรม/bin/sedถูกเรียกใช้จาก/home/reneนั้นกระบวนการที่สร้างขึ้นจากการเรียก sed มีไดเรกทอรีปัจจุบัน/home/reneหรือไม่
10 process 

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