উত্তর:
প্রক্রিয়াটির বাইনারি অবস্থান পাওয়ার একটি উপায় হ'ল ব্যবহার lsof
এবং grep
প্রথম txt
বিভাগের জন্য। উদাহরণস্বরূপ, শেলটিতে শেলটি কী বাইনারি তা দেখতে শেলটির স্থানে শেলের পিআইডি ব্যবহার করুন $$
।
$ lsof -p $$ | grep txt
bash 78228 blair txt REG 14,2 1244928 6568359 /bin/bash
bash 78228 blair txt REG 14,2 1059792 23699809 /usr/lib/dyld
bash 78228 blair txt REG 14,2 136368128 81751398 /private/var/db/dyld/dyld_shared_cache_i386
আপনি দেখতে পাচ্ছেন যে শেলটি ব্যবহার করছে /bin/bash
।
এই কৌশলটি কাজ করে যদি কোনও নিখুঁত বা আপেক্ষিক পথ ব্যবহার করে প্রক্রিয়া চালু করা হয়। উদাহরণস্বরূপ, একটি শেলের মধ্যে গিয়ে চলছে
$ sleep 1234567
এবং ps
অন্য শেল ব্যবহার করে কেবল এটি কীভাবে চালু হয়েছিল তা দেখায়:
$ ps auxww|grep '[s]leep'
blair 79462 0.0 0.0 600908 744 s011 S+ 11:17PM 0:00.00 sleep 1234567
ব্যবহার lsof
শো যা বাইনারি এটা দৌড়াতে
$ lsof -p 79462 | awk '$4 == "txt" { print $9 }'
/opt/local-development/bin/gsleep
আমার ম্যাকপোর্টস কোরিউটিল + সহ + ডিফল্ট_নাম ইনস্টল করা আছে, যা ব্যাখ্যা করে যে আমি তুলেছি gsleep
এবং না /bin/sleep
।
উদাহরণ: আপনি এর জন্য সহযোগী প্রক্রিয়া কমান্ডের নাম পরে PID 45109
...
> % ps awx | awk '$1 == 45109 { print $5 }'
> /Applications/Safari.app/Contents/MacOS/Safari
গ্রিপ সহ পিএস-শেফ আমার পক্ষে কাজ করে। নির্দিষ্ট ফাইলের নামের জন্য, গ্রেপের মাধ্যমে কেবল পাইপ করুন:
MacBook:~ Me$ ps -ef | grep Safari | grep -v grep
501 15733 301 0 0:25.76 ?? 1:58.24 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_4977855
(এই চূড়ান্ত 'গ্রেপ-ভি গ্রেপ' আপনাকে আউটপুটটিতে নিজের নিজস্ব গ্রেপ কমান্ড পাওয়া সহজ করে দেয়)
PS -p <pid> -কম্যান্ড
L1A1:~ a1155344$ ps -p1 -Ocommand
PID TT STAT TIME COMMAND
1 ?? Ss 0:02.26 /sbin/launchd
; exit
প্রিন্ট স্টেটমেন্টের পরে যুক্ত করেছিলাম যাতেtxt
ব্যাশের উদাহরণে কয়েকটি থাকলেও কেবল প্রথম এন্ট্রিটিই মুদ্রিত হবে।