وقتی یک فرمان را در لینوکس اجرا می کنید چه اتفاقی می افتد؟

اکثر کاربران لینوکس اغلب از عملکرد داخلی سیستم عامل بی اطلاع هستند. ممکن است مدت طولانی دستورات لینوکس را بر روی پوسته اجرا کنید ، اما آیا تا به حال فکر کرده اید که با ضربه زدن به Enter در پشت صحنه چه می گذرد؟

در پایان ، درک مختصری از نحوه پردازش پوسته فرمان تایپ شده در لینوکس خواهید داشت.

پردازش فرمان

هنگامی که یک دستور را وارد می کنید ، اولین کاری که پوسته انجام می دهد این است که کل دستور را به "نشانه" تقسیم می کند. سپس پوسته به دنبال نام برنامه ای است که متعلق به اولین نشانه در خط فرمان است.

اگر آن را در هیچ یک از دایرکتوری ها در مسیر جستجوی تعریف شده در متغیر محیط $ PATH یا در فهرست محلی با عملگر پیدا نکرد ، یا نام مستعار پوسته یا تابع پوسته نیست ، پوسته خطا می دهد به اگر یک فرمان معتبر پیدا کند ، پوسته از طریق هر یک از نشانه های دیگر عبور می کند و تصمیم می گیرد که آیا متغیر است ، پارامتر پوسته است یا آرگومان فرمان است.

اگر پوسته تعیین کند که یک متغیر یا پارامتری مانند عملگر ~ برای فهرست اصلی است ، پوسته آنها را گسترش داده یا مقادیر اصلی آنها را در دستور جایگزین می کند.

هنگامی که پوسته پارامترها یا متغیرها را گسترش می دهد ، در طول رشته فرمان به فرمان منتقل می شود و برنامه را با آرگومان های خود اجرا می کند. پوسته تعیین نمی کند که هیچ آرگومانی معتبر باشد. این وظیفه فرماندهی است.

اجرای فرمان

وقتی پوسته دستور دیگری را اجرا می کند ، چگونه دوباره به همان اعلان قبلی که قبلاً استفاده می کردید ، برمی گردد؟ پوسته از خود یک کپی تهیه می کند ، فرآیندی که به آن فورکینگ می گویند. این کپی از پوسته با دستوراتی جایگزین می شود که تمام آرگومان هایی که قبلاً پردازش شده اند را جایگزین می کند. این به عنوان "exec" و فرآیند ترکیبی به عنوان "fork-and-exec" شناخته می شود.

به عنوان مثال ، هنگامی که دستور ls را اجرا می کنید ، فرآیند پوسته با استفاده از روش fork () خود را فورک می کند و یک نمونه پوسته دیگر ایجاد می کند. از بین دو فرآیند پوسته ای که روی سیستم اجرا می شود ، پوسته اضافی ls را با استفاده از تابع exec () اجرا می کند و خود را به نمونه ای از دستور ls تبدیل می کند.

در همین حال ، پوسته اصلی منتظر است تا دستور کامل شود. به همین دلیل است که می توانید از کنترل شغل برای تعلیق مشاغل و اجرای مشاغل در پس زمینه در پوسته استفاده کنید.

مطالب مرتبط: فرآیند در لینوکس چیست؟

گزارش وضعیت خروج

دستورات لینوکس گزارش می دهند که آیا آنها با موفقیت از طریق وضعیت خروجی خود اجرا شده اند یا خیر. همانطور که از نامش پیداست ، برنامه ها پس از پایان اجرا وضعیت خروج خود را گزارش می کنند. آنها این کار را از طریق دلار انجام می دهند؟ محیط متغیر ، که شامل وضعیت خروجی آخرین فرمان است.

طبق قرارداد ، وضعیت خروجی 0 نشان دهنده اجرای موفق است ، در حالی که هر چیزی غیر از 0 معمولاً به معنای خطا است. بسته به نحوه پیکربندی درخواست شما ، ممکن است پوسته شما وضعیت خروجی غیر صفر را در خط فرمان نشان دهد.

تصویر بالا نمونه ای است که یک درخواست Zsh سفارشی را نشان می دهد که وضعیت خروج خطا 127 را به دلیل فرمان موجود نشان می دهد.

اکنون می دانید دستورات لینوکس چگونه کار می کنند

اکنون که می دانید پوسته لینوکس چگونه یک فرمان را پردازش می کند ، خود را فورک می کند و چگونه اجرا می شود و چگونه برنامه ها وضعیت خروج خود را گزارش می دهند ، می توانید از خط فرمان به طور مثرتری استفاده کنید.

چندین پوسته لینوکس به صورت رایگان در اختیار کاربران قرار می گیرد. در حالی که هر یک از آنها کم و بیش یک کار را انجام می دهند ، اما در بسیاری از جنبه ها متفاوت هستند. می توانید برخی از پوسته ها را روی سیستم خود نصب کنید و خودتان تصمیم بگیرید که کدام یک بیشتر به شما مناسب است.