moslem.b نوشته است:علی جان با این توضیحاتی که دادی من اینجور استنباط میکنم که اجرا کردن شل با . باعث میشه اسکریپت از بش اصلی استفاده کنه ولی با اجرای شل به شکل /. ما رسما یک عدد پروسه ی اضافی هم ایجاد میکنیم که باعث اشغال شدن منابع سیستمی بیشتری میشه درسته ؟
....
یعنی اگه اسکریپت شما همزمان 4 دستور رو بصورت مداوم اجرا کنه 4 عدد پروسه ی خشکل از بش استفاده میکنن
...
اگه شا-بنگ مشخص نکنیم و بش رو هم kill کنیم شل از کدوم مفسر استفاده میکنه ؟
در مورد منابع سیستمی، بله طبیعتا مقداری حافظه و توان پردازشی صرف اجرای یک نسخهی اضافی از bash برای قبول پدرخواندگی اون دستور میشه ولی با توجه به سیستمهای امروزی این مقدار چشمگیر نیست.
خب طبیعیه که اگه ۴ دستور همزمان اجرا بشن ۴ تا پروسه خواهیم داشت ولی اینکه این پروسهها یک شل مختص خودشون بگیرن فکر میکنم به نحوهی اجرای موازیشون بستگی داشته باشه که اگه منظورت در اینجا فرستادنشون به پسزمینه به کمک & باشه حق با تو هستش و چهار تا شل باید اجرا بشه.
راستی من یک چیزی پیدا کردم، البته این رو با الهام از داس فهمیدم. ظاهرا یک سری از دستورات هستند که اگه اجراشون کنین هیچ PID خاصی برای کشتنشون پیدا نمیکنین. البته من فقط این قضیه رو روی یکی از این دستورات امتحان کردم و این قضیه رو تعمیم دادم. خب منظورم کدوم دستوراته؟ منظورم دستوراتی هستش که در خروجی دستور help ظاهر میشن و به طور مشخص دستور read رو تست کردم. حدسم اینه که این دستورات دستورات داخلی bash هستند و برای متوقف کردن چنین پروسههایی باید خود bash رو سر برید! اینجوری منطقیتر به نظر مییاد که برای اجرای هر اسکریپت/دستور(غیر داخلی) یک bash مجزا فراخوانی بشه و موقع متوقف کردن پروسهی چنین دستوراتی یک bash اضافی بوجود بیاد!!
مسلم جان؟ خب تا وقتی shell نباشه که شل اسکریپتی نخواهد بود! اگه منظورت اجرای اسکریپت از محیط میز کار یا چیزی مثل این باشه هم خب بالاخره دو حالت برای اجرا داریم: یا اجرا یا اجرا در ترمینال. با زدن اجرا که اتفاقی نمیافته و میمونه اجرا در ترمینال که همون bash هستش. در مورد این قضیه همونطور که قبلا بررسی کردیم، فقط در صورتیکه مشکل پیش مییاد که شل پیش فرض bash نباشه.
برای بررسی اینکه شل پیش فرض شما چیه از این دستور کمک بگیرین:
- کد: گزینش همه
grep ali-gh /etc/passwd
فقط کافی به جای ali-gh اسم کاربری خودتون رو بنویسین/
اگه کنجکاو هستین که چه شلهای دیگهای روی سیستمون نصب هستند از این دستور کمک بگیرین:
- کد: گزینش همه
grep ali-gh /etc/passwd
خودتون میتونین حدس بزنین، جایگزین کردن شل پیش فرض چقدر آسون میتونه باشه. پس بهتره شابنگ رو رعایت کنیم،موافقین؟
اگه با شروع بخش جدید موافقین اعلام کنین