ทุกกระบวนการจะถูกระบุไว้ในผลลัพธ์ของps aux
; ไม่ว่าจะทำงานนอนหลับซอมบี้หรือหยุดทำงาน
อย่างไรก็ตามในกรณีของคุณเนื่องจากคุณวิ่งขั้นตอนโดยใช้sh abc.sh
, sh
เป็นโปรแกรม (เปลือก) abc.sh
ที่ทำงานและไม่ได้ ดังนั้นps aux
จะไม่ประกอบด้วยกระบวนการabc.sh
เพราะสิ่งที่grep
ไม่สามารถให้ผลลัพธ์ใด ๆ
ดังนั้นวิธีที่ถูกต้องที่คุณควรใช้คือ:
ps aux | grep sh
นอกจากนี้ยังอาจจะกลับมาที่คุณกระบวนการอื่น ๆ ที่กำลังทำงานอยู่มีสตริงที่ใดก็ได้ในการส่งออกของพวกเขาsh
ps aux
คุณควรทราบว่าการที่จะ "ทำงาน" เมื่อการส่งออกของps aux
มีของเป็นSTAT
R
ถ้ามันเป็นอย่างอื่นมันจะไม่ทำงานที่อินสแตนซ์ที่คุณสั่งให้ใช้เพื่อตรวจสอบกระบวนการทำงาน สถานะกระบวนการที่แตกต่างกันสามารถพบได้ใน man page สำหรับ ps:
D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is being traced
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent
คุณสามารถเรียกใช้top
คำสั่งเพื่อตรวจสอบว่ากระบวนการกำลังทำงานหรือหลับอยู่และปริมาณของ CPU, RAM ที่ใช้ไปหรือไม่ (นี่จะแสดงรายการกระบวนการของคุณอีกครั้งsh
)
อย่างไรก็ตามหากคุณต้องการให้กระบวนการของคุณอยู่ในรายการabc.sh
คุณควรมีบรรทัดแรกของสคริปต์ที่คุณใช้เป็น:
#!/bin/sh
เพื่อให้เชลล์จะรู้ว่าแอปพลิเคชันใดที่จะใช้ในการเรียกใช้สคริปต์ (ในกรณีนี้ให้เปลี่ยนเป็น#!/bin/bash
bash) จากนั้นให้สิทธิ์อนุญาตในการเรียกใช้กระบวนการโดยใช้:
chmod +x /path/to/abc.sh
แทนที่/path/to/
ด้วยตำแหน่งของabc.sh
ไฟล์จากนั้นรันabc.sh
โดยใช้
/path/to/abc.sh
แทนที่/path/to/
ด้วยตำแหน่งของabc.sh
ไฟล์อีกครั้ง
S+
หมายถึงอะไร