আমার একটি দীর্ঘ চলমান bash
উদাহরণ রয়েছে (একটি screen
সেশনের অভ্যন্তরে) যা একটি লুপের ভিতরে প্রতিটি কমান্ডের একটি জটিল সেট সম্পাদন করে (প্রতিটি লুপ পাইপ, পুনর্নির্দেশকরণ ইত্যাদি করে)।
দীর্ঘ কমান্ড লাইনটি টার্মিনালের অভ্যন্তরে লেখা ছিল - এটি কোনও স্ক্রিপ্টের অভ্যন্তরে নয়। এখন, আমি বাশ প্রক্রিয়া আইডি জানি, এবং আমার রুট অ্যাক্সেস আছে - আমি কীভাবে দেখতে পাব যে এর ভিতরে সঠিক কমান্ড লাইন কার্যকর করা হচ্ছে bash
?
bash$ echo $$
1234
bash$ while true ; do \
someThing | somethingElse 2>/foo/bar | \
yetAnother ; sleep 600 ; done
এবং অন্য শেলের উদাহরণে, আমি পিআইডি 1234 এর মধ্যে কমান্ড লাইনটি দেখতে চাই:
bash$ echo $$
5678
bash$ su -
sh# cd /proc/1234
sh# # Do something here that will display the string \
'while true ; do someThing | somethingElse 2>/foo/bar | \
yetAnother ; sleep 600 ; done'
এটা কি সম্ভব?
সম্পাদনা # 1
আমি পেয়েছি এমন কিছু উত্তরের জন্য পাল্টা উদাহরণ যুক্ত করা।
ব্যবহার সম্পর্কে
cmdline
অধীনে/proc/PID
কাজ না হলে, অন্তত আমার দৃশ্যকল্প নেই। এখানে একটি সাধারণ উদাহরণ:$ echo $$ 8909 $ while true ; do echo 1 ; echo 2>/dev/null ; sleep 30 ; done
অন্য শেলের মধ্যে:
$ cat /proc/8909/cmdline bash
ব্যবহার
ps -p PID --noheaders -o cmd
ঠিক ততই অকেজো:$ ps -p 8909 --no-headers -o cmd bash
ps -eaf
এছাড়াও সহায়ক নয়:$ ps -eaf | grep 8909 ttsiod 8909 8905 0 10:09 pts/0 00:00:00 bash ttsiod 30697 8909 0 10:22 pts/0 00:00:00 sleep 30 ttsiod 31292 13928 0 10:23 pts/12 00:00:00 grep --color=auto 8909
এটি হ'ল, অরিজিনাল কমান্ড লাইনের কোনও আউটপুট নেই, যা আমি খুঁজছি - অর্থাত্
while true ; do echo 1 ; echo 2>/dev/null ; sleep 30 ; done
।