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

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

4
ทำไมถึงมีหลายบัญชี ฉันเป็นผู้ใช้คนเดียว
ฉันใช้ระบบเดสก์ท็อป Ubuntu 12.04 จนถึงตอนนี้ฉันได้ติดตั้งเพียงบางโปรแกรม (ฉันมีสิทธิ์ sudo) เมื่อฉันตรวจสอบรายชื่อผู้ใช้ในระบบฉันเห็นรายการยาวเช่นผู้ใช้มากกว่า 20 ราย - เมื่อใดที่ผู้ใช้เหล่านี้ถูกสร้างขึ้น (เช่น daemon, sys, sync, เกม, ชีพจร ฯลฯ ) สิ่งเหล่านี้เกี่ยวข้องกับโปรแกรมใหม่ที่กำลังติดตั้งอย่างไร ถ้าฉันรันโปรแกรมบนระบบของฉันมันควรจะทำงานด้วย UID ของฉัน แต่เมื่อทำpsฉันเห็นโปรแกรมอื่น ๆ ที่ทำงานด้วย UID ที่แตกต่างกัน (เช่น root, daemon, avahi, syslog, colord เป็นต้น) - โปรแกรมเหล่านี้เริ่มต้นด้วย UID ที่แตกต่างกันอย่างไร

1
fork () และสัญญาณถูกส่งไปยังกระบวนการอย่างไร
ฉันโปรแกรมที่ฉันเขียนใน C fork () ปิดกระบวนการลูก กระบวนการจะไม่ยุติ ถ้าฉันเปิดโปรแกรมจากบรรทัดคำสั่งและกด control-c กระบวนการใดที่จะได้รับสัญญาณขัดจังหวะ?
13 process  signals  fork 

1
“ อินสแตนซ์ที่ไม่รู้จัก” หมายถึงอะไรเมื่อเริ่มบริการใหม่
ฉันพยายามvsftpdเรียกใช้ไฟล์เซิร์ฟเวอร์ที่ทำงานบน Ubuntu 13.10 ฉันไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์จากเครือข่ายอื่นแม้ว่าเครือข่ายนี้จะเชื่อมต่อกับเครือข่ายของเซิร์ฟเวอร์และpingทำงานอยู่ มีข้อสงสัยเกี่ยวกับการvsftpdเริ่มระบบใหม่เมื่อกำหนดค่าvsftpdฉันถูกขอให้รีสตาร์ทโดยใช้: service vsftpd restart ผลลัพธ์บอกว่า: "หยุด: อินสแตนซ์ที่ไม่รู้จัก" ฉันไม่รู้ว่านั่นหมายถึงอะไร?

1
เหตุใด PGID ของลูกของฉันจึงไม่ประมวลผล PID ของผู้ปกครอง
ดังนั้นฉันจึงอ่านทุกที่ว่าคำสั่งนี้ควรยุติกระบวนการลูกทั้งหมดของกระบวนการหลัก: kill -- -$$ การใช้ ID เชิงลบพร้อมกับคำสั่ง kill อ้างอิง PGID และจากตัวอย่างที่ฉันเห็นมันปรากฏว่า PGID ของกระบวนการลูกควรเป็น PID ของผู้ปกครอง แต่ไม่ใช่กรณีในระบบของฉัน ในระบบของฉัน PGID ของเด็กนั้นเหมือนกับ PGID ของสคริปต์หลักซึ่งกลายเป็นทุบตี เกิดอะไรขึ้นที่นี่? ตัวอย่างผิดหรือระบบของฉันตั้งค่าแตกต่างกันหรือไม่? สิ่งที่ฉันต้องทำให้สำเร็จคือการยุติกระบวนการลูกโดยไม่ต้องยุติพาเรนต์ดังนั้นฉันไม่ต้องการส่งสัญญาณการฆ่าไปยัง PGID ที่พาเรนต์เข้ามา

2
“ การขยายสแต็กอัตโนมัติ” คืออะไร?
getrlimit (2)มีคำจำกัดความต่อไปนี้ใน man pages: RLIMIT_AS ขนาดสูงสุดของหน่วยความจำเสมือนของกระบวนการ (พื้นที่ที่อยู่) ในหน่วยไบต์ ขีด จำกัด นี้มีผลต่อการเรียก brk (2), mmap (2) และ mremap (2) ซึ่งล้มเหลวด้วยข้อผิดพลาด ENOMEM เมื่อเกินขีด จำกัด นี้ นอกจากนี้ยังมีการขยายตัวของสแต็คอัตโนมัติจะล้มเหลว (และสร้าง SIGSEGV ที่ฆ่ากระบวนการถ้าไม่มีสแต็คอื่นได้รับการให้บริการผ่านทาง sigaltstack (2)) เนื่องจากค่ามีความยาวบนเครื่องที่มีความยาว 32 บิตขีด จำกัด นี้จะมากที่สุดที่ 2 GiB หรือทรัพยากรนี้ไม่ จำกัด "การขยายสแต็กอัตโนมัติ" มีความหมายอย่างไรที่นี่ สแต็กในสภาพแวดล้อม Linux / UNIX จะเติบโตตามต้องการหรือไม่? ถ้าใช่กลไกที่แน่นอนคืออะไร
13 linux  process  memory  limit 

2
ความแตกต่างระหว่าง pidof และ pgrep คืออะไร?
เมื่อฉันใช้คำสั่งเหล่านี้อย่างใดอย่างหนึ่งกับอาร์กิวเมนต์เป็นชื่อของกระบวนการพวกเขาทั้งสองกลับหมายเลขเดียวกันแน่นอน พวกเขาเป็นคำสั่งเดียวกันหรือไม่ พวกเขาสองคำสั่งต่างกันที่ทำสิ่งเดียวกัน เป็นหนึ่งในนั้นนามแฝงอื่น ๆ ? pidof firefox pgrep firefox
13 process 

4
สคริปต์ Bash รอกระบวนการและรับรหัสส่งคืน
ฉันพยายามสร้างสคริปต์ซึ่งจะเริ่มคำสั่งพื้นหลังจำนวนมาก สำหรับแต่ละคำสั่งพื้นหลังฉันต้องได้รับรหัสส่งคืน ฉันลองใช้สคริปต์ต่อไปนี้แล้ว: #!/bin/bash set -x pid=() return=() for i in 1 2 do echo start $i ssh mysql "/root/test$i.sh" & pid[$i]=$! done for i in ${#pid[@]} do echo ${pid[$i]} wait ${pid[$i]} return[$i]=$? if [ ${return[$i]} -ne 0 ] then echo mail error fi done echo ${return[1]} echo ${return[2]} ปัญหาของฉันอยู่ระหว่างการรอลูปถ้า …
13 linux  bash  process  array 

3
ฆ่าบริการใด ๆ ที่ทำงานอยู่ที่พอร์ตเฉพาะ
ฉันพยายามเขียนสคริปต์ที่ฆ่าบริการที่ทำงานที่พอร์ตเฉพาะ นี่คือสคริปต์ของฉัน: a=$(ps ax | grep 4990 | grep java | awk '{print $1}') kill -9 $a มันเป็นโปรแกรมจาวา สคริปต์นี้ใช้งานได้บางครั้ง แต่ล้มเหลวอย่างลึกลับส่วนใหญ่ มีวิธีอื่นในการฆ่าบริการที่ทำงานบนพอร์ตหรือไม่? 4990พอร์ตของฉันคือ
13 process  kill  tcp 

1
ความสัมพันธ์ระหว่างกระบวนการเคอร์เนลเธรดกระบวนการที่มีน้ำหนักเบาและเธรดผู้ใช้ใน Unix คืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา Unix Internal โดย Vahalia มีตัวเลขแสดงความสัมพันธ์ระหว่างกระบวนการเคอร์เนลเธรดกระบวนการน้ำหนักเบาและเธรดผู้ใช้ หนังสือเล่มนี้ให้ความสนใจมากที่สุดกับ SVR4.2 และยังสำรวจ 4.4BSD, Solaris 2.x, Mach และ Digital UNIX โดยละเอียด โปรดทราบว่าฉันไม่ได้ถามเกี่ยวกับ Linux สำหรับแต่ละกระบวนการมีกระบวนการที่มีน้ำหนักเบาอย่างน้อยหนึ่งกระบวนการอ้างอิงหรือไม่? รูปที่ 3.4 ดูเหมือนจะบอกว่าใช่ ทำไมรูปที่ 3.5 (a) แสดงกระบวนการโดยตรงที่ด้านบนของ CPU โดยไม่มีกระบวนการที่มีน้ำหนักเบาในระหว่างนั้น สำหรับกระบวนการที่มีน้ำหนักเบาแต่ละครั้งจะมีเคอร์เนลเธรดเดียวที่อ้างอิงกระบวนการที่มีน้ำหนักเบาหรือไม่ รูปที่ 3.4 ดูเหมือนจะบอกว่าใช่ ทำไมรูปที่ 3.5 (b) แสดงกระบวนการที่มีน้ำหนักเบาโดยตรงบนกระบวนการโดยที่ไม่มีเคอร์เนลเธรด เคอร์เนลเธรดเป็นเอนทิตีเดียวที่สามารถกำหนดเวลาได้หรือไม่? กระบวนการที่มีน้ำหนักเบาถูกกำหนดเวลาโดยอ้อมผ่านการกำหนดตารางเวลาเธรดเคอร์เนลพื้นฐานหรือไม่? กระบวนการที่กำหนดไว้ทางอ้อมผ่านการกำหนดเวลากระบวนการน้ำหนักเบาพื้นฐานหรือไม่ ปรับปรุง: ฉันถามคำถามที่คล้ายกันสำหรับ Linux กระบวนการน้ำหนักเบาติดอยู่กับเคอร์เนลเธรดใน …

4
lsof -p PID เทียบกับ lsof | PID ของ grep
ฉันไม่เข้าใจ ouput ของคำสั่ง lsof เมื่อฉันเขียน lsof -p PID ฉันได้ 4 บรรทัดและเมื่อฉันเขียน lsof | grep PID ฉันได้รับหลายร้อยบรรทัด มันจะไม่ส่งคืนผลลัพธ์เดียวกันหรือไม่ ขอบคุณสำหรับคำตอบของคุณ นี่คือผลลัพธ์ ดูเหมือนว่าจะเป็นกระบวนการย่อยหรืองานนี้หมายถึงอะไร? lsof -p 29076 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 29076 pr cwd unknown /proc/29076/cwd (readlink: Permission denied) java 29076 pr rtd unknown /proc/29076/root (readlink: Permission denied) …
12 process  lsof 

4
จะค้นหาแหล่งที่มาของกระบวนการวางไข่ได้อย่างไร
ฉันมีกระบวนการ Java ที่ทำงานบนอินสแตนซ์ RedHat Linux ปัญหาคือมันปรากฏขึ้นอีกครั้งหลังจากที่ฉันฆ่ามัน ฉันไม่แน่ใจว่าจะมองที่ไหน ฉันไป crontab แล้ว แต่ไม่มีโชค ฉันดู PPID แล้ว แต่มันก็ชี้ไปที่ init (1) ความคิดใดที่ฉันสามารถค้นหาแหล่งที่มา?
12 process  kill 

1
ความหมายของการส่งออกของ PMAP
ฉันเขียนmain.cใน Linux: int main() { while (1){} } เมื่อฉันรวบรวมและเริ่มมันฉันสามารถpmap: # pmap 28578 28578: ./a.out 0000000000400000 4K r-x-- /root/a.out 0000000000600000 4K r---- /root/a.out 0000000000601000 4K rw--- /root/a.out 00007f87c16c2000 1524K r-x-- /lib/libc-2.11.1.so 00007f87c183f000 2044K ----- /lib/libc-2.11.1.so 00007f87c1a3e000 16K r---- /lib/libc-2.11.1.so 00007f87c1a42000 4K rw--- /lib/libc-2.11.1.so 00007f87c1a43000 20K rw--- [ anon ] 00007f87c1a48000 128K …


5
วิธีการฆ่าอย่างงดงาม
หลังจากสคริปต์ทุบตีของฉันทำกับเซิร์ฟเวอร์ซีลีเนียมแล้วสคริปต์ก็จะฆ่าแบบนี้: kill `ps -ef | grep selenium | awk '{ print $2 }'` ในขณะที่มันใช้งานได้และมันจะฆ่าสคริปต์ซีลีเนียมมันก็พยายามที่จะฆ่ากระบวนการสำหรับgrep seleniumดังนั้นตามเวลาที่หมายเลขกระบวนการกลับไปที่คำสั่ง kill กระบวนการจะหายไปดังนั้นจึงสิ้นสุดการสร้างข้อความแสดงข้อผิดพลาด (ในคำอื่น ๆ : มันจบลงด้วยการฆ่าสองกระบวนการหนึ่งในนั้นคือเซิร์ฟเวอร์ซีลีเนียมจริงอีกกระบวนการหนึ่งเป็นกระบวนการที่หายวับไปซึ่งเป็นผลข้างเคียงของวิธีที่ฉันทำตามคำสั่งนี้) มีวิธีที่สง่างามกว่าในการฆ่ากระบวนการที่ไม่มีผลข้างเคียงนี้หรือไม่? (FWIW หนึ่งความคิดที่ฉันมี: สคริปต์เดียวกันนี้เริ่มต้นขึ้นในซีลีเนียมก่อนหน้านี้ในสคริปต์ดังนั้นอาจจะมีวิธีที่ฉันสามารถจับ PID ได้เมื่อฉันเริ่มต้นซีลีเนียมฉันสามารถเก็บมันไว้และฆ่ามันโดยตรงแทนที่จะเป็น grepping ID กระบวนการปัญหาคือฉันไม่รู้วิธีรับ PID นั้นวิธีใช้ตัวแปรเพื่อเก็บมันและวิธีอ้างอิงในสคริปต์ในภายหลัง แต่วิธีนี้เป็นวิธีที่ดีกว่าหรือไม่)
12 process  search  kill 

3
รักษา 100 อินสแตนซ์ของโปรแกรมที่ทำงานอยู่
ขณะนี้ฉันกำลังใช้ supervisord เพื่อรักษาสคริปต์ให้ทำงาน 100 อินสแตนซ์ ถ้ามีผู้ตายแล้วมันจะเริ่มขึ้นใหม่ อย่างไรก็ตามดูเหมือนว่าจะดิ้นรนรักษาจำนวนมากขึ้น (> 300 กระบวนการ) และฉันกำลังมองหาการทดแทน Monit ดูเหมือนจะไม่ทำสิ่งที่ฉันต้องการเพราะมันจะตรวจสอบสคริปต์แต่ละตัวและดูเหมือนจะไม่สามารถดูสคริปต์เดียวกันได้ 100 อินสแตนซ์ได้อย่างง่ายดาย มีข้อเสนอแนะเกี่ยวกับเครื่องมืออื่นที่ฉันสามารถใช้ได้ไหม?

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