كيف يعرف برنامج Linux/Unix Bash Pid الخاص به؟
سؤال
لدي نص في باش يسمى Script.sh
, ، ويحتاج إلى معرفة PID الخاصة به (أي أحتاج إلى الحصول على PID داخل Script.sh)
أي فكرة عن كيفية القيام بذلك ؟
المحلول
يحتوي المتغير "$$" على PID.
نصائح أخرى
استعمال $BASHPID
أو $$
انظر كتيب لمزيد من المعلومات ، بما في ذلك الاختلافات بين الاثنين.
tl ؛ drtfm
$$
يتوسع إلى معرف العملية للقذيفة.- في
()
Subshell ، يمتد إلى معرف العملية للقذيفة الاحتجاج ، وليس subshell.
- في
$BASHPID
يتوسع إلى معرف العملية لعملية باش الحالية.- في
()
Subshell ، يمتد إلى معرف العملية من subshell
- في
بالإضافة إلى المثال الوارد في دليل البرمجة النصية المتقدمة المشار إليه من قبل Jefromi, ، توضح هذه الأمثلة كيف تنشئ الأنابيب subshells:
$ 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
يتم تخزين PID في $$
.
مثال: kill -9 $$
سوف يقتل مثال الصدفة يسمى من.
يمكنك استخدام ال $$
عامل.
إذا كانت العملية عبارة عن عملية طفل ولم يتم تعيين $ bashpid ، فمن الممكن الاستعلام عن PPID لعملية الطفل التي تم إنشاؤها لعملية التشغيل. قد يكون قبيح بعض الشيء ، لكنه يعمل. مثال:
sleep 1 &
mypid=$(ps -o ppid= -p "$!")
لا تنتمي إلى StackOverflow