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

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

4
ฉันจะหยุดชั่วคราว / ทำงานต่อ rsync ได้อย่างไร
ฉันจะหยุด rsync ที่หยุดชั่วคราวได้อย่างไร ครั้งแรกที่ฉันทำCtrl+ Cเพื่อฆ่ามันและใช้-Pแฟล็กเพื่อทำงานอีกครั้ง สิ่งนี้มีแนวโน้มที่จะทำให้การถ่ายโอนไฟล์ปัจจุบันเสียหายหรือไม่ ครั้งที่สองฉันแค่ทำให้ MacOS เข้าสู่โหมดสลีป (โดยปิดฝา) ดูกระบวนการทำงานที่ฉันเห็น 2 (ไม่แน่ใจว่าทำไม) ด้วยสถานะ 'S' พยายามใช้ kill -SIGCONT เพื่อดำเนินการกระบวนการต่อ แต่ไม่มีผลใด ๆ
49 process  rsync 

7
วิธีการดูกระบวนการเฉพาะด้านบน
มีตัวเลือกที่ค่อนข้างก้าวไปข้างหน้าพร้อมกับด้านบนเพื่อติดตามกระบวนการเฉพาะหรือไม่ เป็นการดีที่จะระบุกระบวนการด้วยคุณค่าที่มนุษย์อ่านหรือไม่ เช่นหรือchromejava กล่าวอีกนัยหนึ่งฉันต้องการดูข้อมูลทั่วไปทั้งหมดที่มีให้ แต่สำหรับผลลัพธ์ที่จะถูกกรองไปยังพารามิเตอร์ที่ให้ไว้เช่น 'chrome' หรือ 'java'
47 process  top 

2
จะระบุกระบวนการที่ไม่มี pid ได้อย่างไร?
ฉันมีกระบวนการที่ฟัง 2 พอร์ต: 45136 / tcp และ 37208 / udp (อันที่จริงฉันถือว่าเป็นกระบวนการเดียวกัน) แต่ netstat ไม่ส่งคืน pid ใด ๆ : netstat -antlp | grep 45136 tcp 0 0 0.0.0.0:45136 0.0.0.0:* LISTEN - ผลลัพธ์เดียวกันกับ "grep 37208" ฉันลองด้วยเช่นกัน: lsof -i TCP:45136 แต่มันจะไม่คืนสิ่งใดเลย มันเป็นการติดตั้งแบบใหม่ของการบีบและฉันไม่รู้จริงๆว่ากระบวนการนี้เป็นอย่างไร ความคิดใด ๆ ตอบ ขอบคุณความคิดเห็นของคุณฉันพบว่ามันคืออะไร ฉันยกเลิกการติดตั้ง nfs-server nfs-common (หลังจาก dkpg --get-selections | …

8
มีโปรแกรมที่สามารถส่งอีเมลแจ้งเตือนเมื่อกระบวนการเสร็จสิ้นหรือไม่?
ฉันเป็นนักวิทยาศาสตร์การคำนวณและฉันใช้การคำนวณจำนวนมากบนลีนุกซ์ โดยเฉพาะฉันเรียกใช้การจำลองโมเลกุล (MD) โดยใช้แพ็คเกจ GROMACS การจำลองเหล่านี้อาจใช้เวลาหลายวันหรือหลายสัปดาห์ทำงานบน (เช่น) 8 ถึง 24 แกน ฉันสามารถเข้าถึงหลายโหนดของคลัสเตอร์ซึ่งหมายความว่าในเวลาใดก็ตามฉันกำลังทำงานประมาณ 4 หรือ 5 งาน (แต่ละงานบนโหนดที่แตกต่างกันและแต่ละงานใน 8-24 คอร์) ปัญหาคือว่าการจำลองใช้เวลาจำนวนตัวแปร ฉันต้องการให้โหนดทั้งหมดทำงานกับการจำลองตลอดเวลา แต่เพื่อเริ่มต้นการจำลองใหม่ฉันต้องทำการล็อกอินด้วยเทอร์มินัลและทำงานด้วยตนเอง แต่ฉันมักจะลืมเวลาที่เหลืออยู่ในการจำลองดังนั้นฉันมักจะตรวจสอบพวกเขาตลอดเวลา มีวิธีใดบ้างที่ฉันสามารถรับอีเมลเมื่อกระบวนการ Linux เสร็จสิ้น มีโปรแกรม Linux ที่ทำสิ่งนี้หรือไม่? ด้วยวิธีนี้ฉันจะรู้ว่าเมื่อใดที่ต้องล็อกอินด้วยเทอร์มินัลและเตรียมการจำลองต่อไป ฉันใช้ Ubuntu Linux ขอบคุณที่สละเวลา.
46 shell  process  email 

1
รับข้อมูลเกี่ยวกับการใช้หน่วยความจำของกระบวนการจาก / proc / pid / smaps
สำหรับกระบวนการที่กำหนดใน/proc/<pid>/smapsสำหรับรายการการแม็พที่กำหนดคือ: Shared_Clean Shared_Dirty Private_Clean Private_Dirty เป็นShared_Clean+ Shared_Dirtyจำนวนหน่วยความจำที่ใช้ร่วมกันกับกระบวนการอื่น ๆ ? มันเหมือนกับ RSS ที่แชร์ใช่ไหม ในทำนองเดียวกันPrivate_Clean+ Private_Dirtyจำนวนหน่วยความจำที่มีอยู่สำหรับกระบวนการเดียวเท่านั้นหรือไม่ ดังนั้นมันจึงเป็นเหมือน RSS ส่วนตัว? ค่า PSS = PrivateRSS + (SharedRSS / จำนวนกระบวนการที่ใช้ร่วมกัน) หรือไม่ บางคำถามเพิ่มเติมหลังจากอ่านลิงค์นี้: LWN ตอนนี้ให้พูดคุยเกี่ยวกับกระบวนการทั้งหมดซึ่ง smaps รายการที่เรากำลังดู ฉันสังเกตเห็นว่าถ้าฉันทำShared_Clean+ Shared_Dirty+ Private_Clean+ Private_Dirtyสำหรับทุกรายการ smaps สำหรับกระบวนการฉันได้รับ RSS ของกระบวนการตามที่รายงานโดยpsซึ่งค่อนข้างเจ๋ง สำหรับเช่น ps -p $$ -o pid,rss จะให้ฉัน (ประมาณ) ค่าเดียวกันสำหรับ RSS เป็นผลรวมของทุกคนShared_Clean, …

5
การวัดการใช้ RAM ของโปรแกรม
time เป็นคำสั่งที่ยอดเยี่ยมถ้าคุณต้องการที่จะคำนวณเวลาของ CPU ที่คำสั่งที่ได้รับ ฉันกำลังมองหาสิ่งที่คล้ายกันซึ่งสามารถวัดการใช้ RAM สูงสุดของโปรแกรมและเด็ก ๆ ควรแยกความแตกต่างระหว่างหน่วยความจำที่จัดสรรที่ใช้และไม่ได้ใช้ บางทีมันอาจให้การใช้หน่วยความจำมัธยฐาน (ดังนั้นการใช้หน่วยความจำที่คุณควรคาดหวังเมื่อทำงานเป็นเวลานาน) ดังนั้นฉันต้องการทำ: rammeassure my_program my_args และรับเอาต์พุตคล้ายกับ: Max memory allocated: 10233303 Bytes Max memory used: 7233303 Bytes Median memory allocation: 5233303 Bytes ฉันดูmemusg https://gist.github.com/526585/590293d6527c91e48fcb08edb8de9fd6c88a6d82แต่ฉันคิดว่ามันค่อนข้างแฮ็ค


2
ทำไมส้อมกลไกการสร้างกระบวนการเริ่มต้นคืออะไร?
การเรียกใช้ระบบ UNIX สำหรับการสร้างกระบวนการ fork () สร้างกระบวนการลูกโดยการคัดลอกกระบวนการหลัก ความเข้าใจของฉันคือสิ่งนี้มักจะตามมาด้วยการเรียกร้องให้ exec () เพื่อแทนที่พื้นที่หน่วยความจำของกระบวนการลูก (รวมถึงส่วนของข้อความ) การคัดลอกพื้นที่หน่วยความจำของผู้ปกครองในทางแยก () ดูเหมือนจะสิ้นเปลืองกับฉันเสมอ (แม้ว่าฉันจะรู้ว่าของเสียสามารถลดลงได้ด้วยการทำให้ส่วนหน่วยความจำคัดลอกตามการเขียนดังนั้นจึงคัดลอกเฉพาะพอยน์เตอร์เท่านั้น) มีใครรู้บ้างไหมว่าทำไมจึงต้องใช้วิธีการทำสำเนานี้สำหรับการสร้างกระบวนการ

4
อะไรคือความแตกต่างระหว่างการเรียกใช้โปรแกรมเป็น daemon และฟอร์กมันลงในพื้นหลังด้วย '&'
อะไรคือความแตกต่างในทางปฏิบัติจากมุมมองดูแลระบบเมื่อปรับใช้บริการบนระบบที่ใช้ระบบปฏิบัติการยูนิกซ์?

4
จะทราบได้อย่างไรว่าโปรแกรมติดอยู่ใน linux?
ฉันใช้คำสั่งต่อไปนี้บนเซิร์ฟเวอร์ ubuntu ของฉัน root@slot13:~# lxc-stop --name pavan --logfile=test1.txt --logpriority=trace ดูเหมือนว่าจะแขวนไปเรื่อย ๆ เมื่อใดก็ตามที่สิ่งนี้เกิดขึ้นบน AIX ฉันก็แค่รับ PID ของกระบวนการที่ละเมิดและพูด $ procstack <pid_of_stuck_process> และมันใช้เพื่อแสดง callstack ทั้งหมดของกระบวนการ procstackใน linux / ubuntu นั้นเทียบเท่ากับอะไรบ้าง?


4
วิธีรับบรรทัดคำสั่งทั้งหมดจากกระบวนการ
ฉันจะรับอาร์กิวเมนต์คำสั่งหรือบรรทัดคำสั่งทั้งหมดจากกระบวนการที่รันโดยใช้ชื่อกระบวนการได้อย่างไร ตัวอย่างเช่นกระบวนการนี้: # ps PID USER TIME COMMAND 1452 root 0:00 /sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pid และสิ่งที่ฉันต้องการคือ/sbin/udhcpc -b -T 1 -A 12 -i eth0 -p /var/run/udhcpc.eth0.pidหรือข้อโต้แย้ง ฉันรู้ชื่อกระบวนการและต้องการข้อโต้แย้ง ฉันใช้ Busybox กับ SliTaz

4
วิธีอ่านตัวแปรสภาวะแวดล้อมของกระบวนการ
ลินุกซ์/proc/<pid>/environไม่อัปเดต (ตามที่ฉันเข้าใจว่าไฟล์มีสภาพแวดล้อมเริ่มต้นของกระบวนการ) ฉันจะอ่านสภาพแวดล้อมปัจจุบันของกระบวนการได้อย่างไร


4
มีตัวแปร UNIX ใดบ้างที่กระบวนการลูกตายกับผู้ปกครอง?
ฉันได้ศึกษาพฤติกรรมเคอร์เนลของ Linux มาระยะหนึ่งแล้วและมันชัดเจนสำหรับฉันเสมอว่า: เมื่อกระบวนการตายเด็กทุกคนจะถูกส่งกลับไปที่initกระบวนการ (PID 1) จนกว่าพวกเขาจะตายในที่สุด อย่างไรก็ตามเมื่อเร็ว ๆ นี้มีคนที่มีประสบการณ์มากกว่าฉันด้วยเคอร์เนลบอกฉันว่า: เมื่อกระบวนการออกไปเด็กทุกคนในนั้นก็ตาย (ยกเว้นคุณใช้NOHUPในกรณีที่พวกเขากลับไปinit) ตอนนี้แม้ว่าฉันจะไม่เชื่อเรื่องนี้ฉันยังคงเขียนโปรแกรมง่าย ๆ เพื่อให้แน่ใจ ฉันรู้ว่าฉันไม่ควรพึ่งพาเวลา ( sleep) สำหรับการทดสอบเนื่องจากทุกอย่างขึ้นอยู่กับการจัดตารางกระบวนการ แต่สำหรับกรณีง่าย ๆ นี้ฉันคิดว่ามันค่อนข้างเพียงพอ int main(void){ printf("Father process spawned (%d).\n", getpid()); sleep(5); if(fork() == 0){ printf("Child process spawned (%d => %d).\n", getppid(), getpid()); sleep(15); printf("Child process exiting (%d => %d).\n", getppid(), getpid()); …
41 process  init  exit  fork 

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