উত্তর:
ব্যবহার $BASHPID
বা$$
দু'জনের মধ্যে পার্থক্য সহ আরও তথ্যের জন্য ম্যানুয়ালটি দেখুন ।
টি এল; DRTFM
$$
শেলের প্রসেস আইডিতে প্রসারিত হয়।
()
সাব-শেল-এ, এটি সাবস্কেল নয়, চালিত শেলের প্রসেস আইডিতে প্রসারিত হয়।$BASHPID
বর্তমান বাশ প্রক্রিয়াটির প্রসেস আইডিতে প্রসারিত হয়।
()
সাব-শেল-এ, এটি সাব-শেলের প্রসেস আইডিতে প্রসারিত হয়$BASHPID
BASH 4. BASH 3.x ব্যবহার করেন তাহলে নতুন হয়, তাহলে আপনি ব্যবহার করতে হবে$$
জেফ্রোমি রেফারেন্সযুক্ত অ্যাডভান্সড বাশ স্ক্রিপ্টিং গাইডে দেওয়া উদাহরণ ছাড়াও , এই উদাহরণগুলি পাইপগুলি কীভাবে সাবশেল তৈরি করে তা দেখায়:
$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656
stdin
) পুনর্নির্দেশ করে । স্ট্রিংটিকে "এখানে স্ট্রিং" হিসাবে উল্লেখ করা হয়।
পিআইডি সংরক্ষণ করা হয় $$
।
উদাহরণ: kill -9 $$
শেল ইনস্ট্যান্সটি যেটিকে বলা হয়েছিল তা মেরে ফেলবে।
kill -9
( -9
পতাকা সহ )টিকে ক্ষতিকারক হিসাবে বিবেচনা করা হয় এবং এটি সম্পূর্ণরূপে প্রয়োজনীয় হলে ব্যবহার করা যেতে পারে)।
kill -9 $$
ঠিক 1 জিনিস। এটি বর্তমান শেল প্রক্রিয়াটিকে হত্যা করে । আপনি যদি শেল সেশনে এমন কিছু করেন যা আপনি পছন্দ করতে চান না .bash_history
: এটি কার্যকর হয়:docker run -e PASSWORD=hunter2 ircbot
আপনি $$
চলকটি ব্যবহার করতে পারেন ।
যদি প্রক্রিয়াটি একটি শিশু প্রক্রিয়া হয় এবং AS BASHPID সেট না করা থাকে তবে চলমান প্রক্রিয়াটির তৈরি শিশু প্রক্রিয়াটির পিপিডকে জিজ্ঞাসা করা সম্ভব। এটি কিছুটা কুৎসিত হতে পারে তবে এটি কার্যকর। উদাহরণ:
sleep 1 &
mypid=$(ps -o ppid= -p "$!")