emacs มีตัวดูกระบวนการ (ตัวจัดการทรัพยากร) หรือเทียบเท่าหรือไม่


14

บางครั้ง emacs จะใช้งาน cpu 100% เห็นได้ชัดว่าเมื่อสิ่งนี้เกิดขึ้นมีปัญหากับกระบวนการควบคุมไม่ได้

แค่สงสัยว่ามีวิธีดูกระบวนการที่กำลังทำงานอยู่ทั้งหมดใน emacs หรือไม่?

ชนิดเช่นยูนิกซ์ htop จอขั้นตอนของระบบการโต้ตอบและผู้ชม ... htop


3
list-processes?
npostavs

@npostavs ขอบคุณ รายการกระบวนการเป็นสิ่งที่ดี แต่ผมสงสัยว่าถ้ามีบางสิ่งบางอย่างที่ให้ข้อมูลเพิ่มเติมเกี่ยวกับทรัพยากรรวมถึงหน่วยความจำและการใช้งาน CPU
Orion

2
สิ่งเดียวที่ฉันนึกได้คือการทำโปรไฟล์: gnu.org/software/emacs/manual/html_node/elisp/Profiling.html
กฎหมาย

3
ลิสต์กฎหมายนั้นถูกต้อง ฉันไม่เชื่อว่าคุณกำลังมองหาผู้ดูกระบวนการเลย (ทำlist-processesหรือprocedไม่เกี่ยวข้อง) กระบวนการเดียวที่คุณสนใจคือ emacs (เดี่ยว) ดำเนินการเองและคุณกำลังพยายามหาสาเหตุว่าทำไมจึงใช้เวลา CPU และ / หรือหน่วยความจำมาก เพื่อที่คุณจะต้องใช้ emacs profiler
phils

คำตอบ:


11

คำถามถูกถามในปี 2559 ตอนนี้ในปี 2562 มีอยู่M-x proced:

โหมดสำหรับการแสดงกระบวนการของระบบและการส่งสัญญาณไปยังพวกเขา

ขั้นตอนทำให้บัฟเฟอร์ Emacs มีรายการของกระบวนการของระบบปัจจุบัน คุณสามารถใช้คำสั่ง Emacs ปกติเพื่อเลื่อนไปมาในบัฟเฟอร์นี้และคำสั่งโพรซีเดอร์พิเศษเพื่อทำงานกับกระบวนการที่แสดง ดูproced-modeการเริ่มต้น


โปรดทราบว่าคุณอาจต้องการเปิดใช้งานM-x proced-toggle-auto-updateบนprocedบัฟเฟอร์ของคุณสำหรับtopลักษณะการทำงานที่เหมือนกันกับการอัปเดตบัฟเฟอร์อัตโนมัติ (ทุก ๆ 5 วินาทีโดยค่าเริ่มต้น)
Pierre Thalamy

10

นอกเหนือจากคำตอบอื่น ๆ ผู้โพสต์ดั้งเดิมอาจต้องการพิจารณาใช้คุณสมบัติการทำโปรไฟล์ในตัว: https://www.gnu.org/software/emacs/manual/html_node/elisp/Profiling.html

เพื่อเริ่มต้น profiling M-x profiler-startพิมพ์ คุณสามารถเลือกโพรไฟล์ตามการใช้งานตัวประมวลผลการใช้หน่วยความจำหรือทั้งสองอย่าง หลังจากทำงานเสร็จแล้วให้พิมพ์M-x profiler-reportเพื่อแสดงบัฟเฟอร์สรุปสำหรับแต่ละทรัพยากรที่คุณเลือกที่จะทำโปรไฟล์ ชื่อของบัฟเฟอร์รายงานรวมเวลาที่สร้างรายงานดังนั้นคุณสามารถสร้างรายงานอื่นได้ในภายหลังโดยไม่ต้องลบผลลัพธ์ก่อนหน้า เมื่อคุณทำโปรไฟล์เสร็จแล้วให้พิมพ์M-x profiler-stop(มีค่าใช้จ่ายเล็กน้อยที่เกี่ยวข้องกับการทำโปรไฟล์)

ดูลิงค์ด้านบนไปยังคู่มือสำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคุณสมบัตินี้


7

คุณอาจต้องการตรวจสอบlist-processes:

list-processesเป็นฟังก์ชั่นเสียงกระเพื่อมรวบรวมแบบโต้ตอบใน ' simple.el'

(list-processes &optional QUERY-ONLY BUFFER)

แสดงรายการกระบวนการทั้งหมดที่เป็นกระบวนการย่อยของ Emacs หากอาร์กิวเมนต์ที่QUERY-ONLYเป็นทางเลือกไม่ใช่แบบไม่มีการประมวลผลเฉพาะกับquery-on-exitชุดธงเท่านั้น
กระบวนการใด ๆ ที่แสดงรายการเป็นออกหรือส่งสัญญาณจะถูกกำจัดจริงหลังจากทำรายการ
อาร์กิวเมนต์เผื่อเลือกBUFFERระบุบัฟเฟอร์ที่จะใช้แทน " *Process List*" nilค่าตอบแทนอยู่เสมอ

ฟังก์ชันนี้แสดงรายการกระบวนการที่เปิดตัวโดย Emacs เท่านั้น หากต้องการดูกระบวนการอื่นที่ทำงานอยู่ในระบบให้ใช้ ' list-system-processes'

ดูเหมือนว่าจะพลาดฟีเจอร์มากมายที่คุณต้องการ แต่ด้วยการเข้ารหัสเล็กน้อยคุณอาจได้รับผลลัพธ์ที่ต้องการ (ถ้าคุณทำเช่นนั้นโปรดส่งแพตช์ของคุณอัปสตรีมฉันจะเห็นฟีเจอร์นี้เป็นประจำใน Emacs) ฉันไม่พบผู้สมัครที่ดีกว่าสำหรับปัญหาของคุณ


6

ตรวจสอบหางเสือ มันแสดงรายการทุกสิ่งที่คุณต้องการและมีการดำเนินการเพื่อส่งสัญญาณไปยังกระบวนการ


5

ฉันชอบ htop และฉันก็ใช้มันใน emacs อย่างไรก็ตามส่วนที่มีการโต้ตอบไม่ทำงานเช่นนี้

(defun htop ()
  (interactive)
  (if (get-buffer "*htop*")
      (switch-to-buffer "*htop*")
    (ansi-term "/bin/bash" "htop")   
    (comint-send-string "*htop*" "htop\n")))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.