คำสั่ง ps ไม่ทำงานในคอนเทนเนอร์นักเทียบท่า


214

ฉันต้องการที่จะทำคำสั่ง ps ในภาชนะนักเทียบท่าที่ได้มาจากที่เก็บฮับอย่างเป็นทางการของเดเบียน:

$ docker run -ti debian:wheezy /bin/bash
root@51afd6b09af8:/# ps
bash: ps: command not found

คำตอบ:


374

psไม่ได้ติดตั้งในwheezyอิมเมจพื้นฐาน ลองใช้จากในคอนเทนเนอร์:

RUN apt-get update && apt-get install -y procps

8
หากคุณได้รับข้อผิดพลาดนี้ "คำสั่ง '/ bin / sh -c apt-get install procps' ส่งคืนรหัสที่ไม่เป็นศูนย์: 1" จากนั้นใช้apt-get install -y procpsแทน
fwc

นี่คือ URL ที่กล่าวถึงในปี 2014 ซึ่งไม่รวมpsอยู่ในภาพเสียงดัง:https://github.com/moby/moby/issues/447#issuecomment-36647268
จริง

RUN apt- รับการอัปเดต && apt-get การติดตั้ง -y procps && rm -rf / var / lib / apt / list / *
Zhuo YING

มันควรจะเพิ่มที่ไหน? ฉันคิดว่าในไฟล์ .yml เมื่อสร้างภาพนักเทียบท่า
Yaro


11

ในกรณีที่คุณไม่สามารถติดตั้งแพ็กเกจ procps (ไม่มีสิทธิ์ที่เหมาะสม) คุณสามารถใช้ / ไดเรกทอรี proc

ไดเรกทอรีแรก ๆ (ตั้งชื่อเป็นตัวเลข) เป็น PID ของกระบวนการของคุณ ภายในไดเรกทอรีคุณสามารถค้นหาข้อมูลเพิ่มเติมที่เป็นประโยชน์ในการถอดรหัสกระบวนการที่เชื่อมต่อกับ PID แต่ละรายการ ตัวอย่างเช่นคุณสามารถใช้คำสั่ง cat เพื่อดูไฟล์ "cmdline" เพื่อตรวจสอบกระบวนการที่เชื่อมต่อกับ PID

$ ls /proc
1 10 11 ...

$ ls -1 /proc/22
attr
autogroup
auxv
cgroup
clear_refs
cmdline
...

$ cat /proc/22/cmdline 
/bin/sh

แม้ว่าจะไม่สะดวกเท่านี้ดูเหมือนคำตอบที่เหมาะสมกว่า
Jairus Martin

1

ประการแรกเรียกใช้คำสั่งด้านล่าง:

apt-get update && apt-get install procps

จากนั้นเรียกใช้:

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