ถ้าฉันมีโพรเซส PID X ฉันจะหาไดเร็กตอรี่ไหนที่มันทำงานอยู่? ฉันสามารถเห็นด้วยps aux | grep X
บรรทัดคำสั่งเต็มรูปแบบที่มันถูกเรียกด้วย อย่างไรก็ตามในกรณีนี้มันเป็น./script.sh
และฉันต้องการที่จะดูscript.sh
ว่ามันกำลังทำงานอยู่
ถ้าฉันมีโพรเซส PID X ฉันจะหาไดเร็กตอรี่ไหนที่มันทำงานอยู่? ฉันสามารถเห็นด้วยps aux | grep X
บรรทัดคำสั่งเต็มรูปแบบที่มันถูกเรียกด้วย อย่างไรก็ตามในกรณีนี้มันเป็น./script.sh
และฉันต้องการที่จะดูscript.sh
ว่ามันกำลังทำงานอยู่
คำตอบ:
ปัญหาที่เกิดขึ้น/proc/PID/exe
ก็คือสำหรับเชลล์สคริปต์จะแสดงตำแหน่งของเชลล์ ปัญหาที่เกิดขึ้น/proc/PID/cwd
คือแสดงไดเรกทอรีการทำงานปัจจุบันของกระบวนการ หากกระบวนการเปลี่ยนไดเรกทอรีนั่นจะสะท้อนให้เห็นในเป้าหมายของ symlink นั้น
นี่จะแสดงสิ่งที่ $ PWD เป็นตอนที่สคริปต์เริ่มต้น (แทนที่ ID กระบวนการที่คุณสนใจซึ่งคุณเห็น "PID"):
procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir
หรือเพียงแค่:
grep -az "\bPWD" /proc/PID/environ
สิ่งนี้จะแสดงคำสั่งที่เริ่มต้นขึ้นเพื่อให้คุณสามารถดูว่ามีการใช้ไดเรกทอรีที่สัมพันธ์หรือสัมบูรณ์
proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd
หรือเพียงแค่:
grep -az PROC_NAME /proc/PID/cmdline
ร่วมกันสิ่งเหล่านี้จะแสดงให้คุณเห็นว่าสคริปต์ใดที่กำลังทำงานอยู่ สำหรับหนึ่งเริ่มต้นด้วยสิ่งที่คุณต้องการคือ./
procdir