linuxLinuxلینوکس چیست؟ هسته، سیستمعامل و محیط اجرای برنامه
لینوکس را با هسته، توزیع و پوسته اشتباه نگیرید؛ نقش هر بخش در اجرای برنامه و راه سادهٔ شناسایی محیط لینوکسی را با مثال ببینید.
مفهوم به زبان ساده
لینوکس در معنای دقیق، هستهای است که میان برنامهها و منابعی مانند پردازنده، حافظه، فایل و شبکه قرار میگیرد. در گفتوگوی روزمره، نام لینوکس را برای یک سیستمعامل کاملِ مبتنی بر این هسته هم به کار میبرند. برای کار عملی بهتر است دقیق بگوییم منظورمان هسته است یا یک #linux-distribution مانند اوبونتو؛ نصب بسته و نام سرویس را معمولاً توزیع تعیین میکند.
پوسته، ویرایشگر و مرورگر خودِ هسته نیستند. برنامه معمولاً از کتابخانهها و #linux-syscall برای درخواست خدمت از هسته استفاده میکند. وقتی فایل باز نمیشود، باید مسیر، هویت پردازه و خطای همان عملیات را بررسی کنیم؛ فقط دانستن اینکه دستگاه لینوکسی است علت خطا را مشخص نمیکند. همچنین داشتن هستهٔ مشترک، یکسانبودن همهٔ ابزارها و پیکربندیها را تضمین نمیکند.
مثال را در ترمینال لینوکسی دارای Python 3 اجرا کنید. هر دو فرمان، خانوادهٔ سیستمِ در حال اجرای خود را گزارش میکنند؛ نام توزیع را نشان نمیدهند. این مشاهده برای ثبت محیط آزمایش مفید است، اما ثابت نمیکند ماشین، سرور مجازی است یا systemd مدیر سرویس آن است. برای این دو پرسش، شواهد جدا لازم داریم. ابتدا نتیجه را ثبت کنید و سپس متناسب با پرسش، سراغ ابزار بعدی بروید.
کجا به کار میآید؟
- شناخت نقش هسته در خطاهای فایل و شبکهٔ برنامه
- ثبت خانوادهٔ سیستم پیش از اجرای تمرین لینوکس
از تعریف تا یک مثال واقعی
uname -s
python3 - <<'PY'
import platform
print(platform.system())
PY
در محیط لینوکسی، دو خط Linux چاپ میشود. این خروجی نام توزیع یا شمارهٔ نسخهٔ آن نیست.
این مثال چطور کار میکند؟
uname نام هستهٔ محیط جاری را گزارش میکند.
Python نیز خانوادهٔ سیستمِ اجرای همان برنامه را میخواند.
برای نام توزیع باید اطلاعات os-release را جدا بررسی کنید.
اشتباه رایج
خروجی Linux بهتنهایی وجود Bash، systemd یا یک سرویس سالم را اثبات نمیکند؛ یک کانتینر نیز میتواند همین نتیجه را نشان دهد.
این را به خاطر بسپارید
برای هر سؤال، شاهد همان لایه را جمع کنید؛ هسته را با کل محیط نرمافزاری یکی نگیرید.