Linux - ค้นหาไดเร็กทอรีการทำงานปัจจุบันของกระบวนการหรือไม่?


11

ถ้าฉันมีโพรเซส PID X ฉันจะหาไดเร็กตอรี่ไหนที่มันทำงานอยู่? ฉันสามารถเห็นด้วยps aux | grep Xบรรทัดคำสั่งเต็มรูปแบบที่มันถูกเรียกด้วย อย่างไรก็ตามในกรณีนี้มันเป็น./script.shและฉันต้องการที่จะดูscript.shว่ามันกำลังทำงานอยู่

คำตอบ:


11

ปัญหาที่เกิดขึ้น/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


pwdx ดีกว่านี้
Bjorn

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