لینوکس یکی از معدود سیستمعاملهایی است که بسیاری از ابزارهای قدیمی آن همچنان روی سیستمهای جدید قابل اجرا هستند. همین موضوع باعث میشود بعضی کاربران سالها از دستورهایی استفاده کنند که دیگر بهترین انتخاب برای انجام همان کار نیستند. برخی از این ابزارها عملاً منسوخ شدهاند، بعضی دیگر فقط نگهداری محدودی دارند و در مواردی نیز جایگزینهای مدرنتر امکانات بیشتری ارائه میکنند.
البته «قدیمی» یا حتی «منسوخ» بودن یک دستور به این معنا نیست که باید فوراً آن را از تمام اسکریپتها و سیستمها حذف کنید. بعضی ابزارها هنوز برای سازگاری با سیستمهای قدیمی کاربرد دارند. با این حال، اگر در حال یادگیری لینوکس هستید یا میخواهید روشهای مدرن مدیریت سیستم را یاد بگیرید، بهتر است از ابتدا با جایگزینهای جدیدتر آشنا شوید.
در این مقاله هفت دستور و ابزار رایج را بررسی میکنیم که در بسیاری از سناریوها بهتر است جای خود را به گزینههای جدیدتر بدهند. در بعضی موارد نیز وضعیت این ابزارها را دقیقتر بررسی میکنیم، چون همه آنها از نظر فنی به یک اندازه «منسوخ» نیستند.
۱. cron؛ زمانبندی وظایف با systemd timer مدرنتر شده است
cron یکی از قدیمیترین ابزارهای زمانبندی وظایف در سیستمهای یونیکسی و لینوکسی است. با استفاده از آن میتوان دستورات و اسکریپتها را در زمانهای مشخص اجرا کرد. ساختار ساده آن باعث شده است که حتی بعد از چند دهه همچنان در بسیاری از سرورها و سیستمها دیده شود.
مشکل اصلی cron بیشتر به تجربه کاربری و محدودیتهای آن مربوط میشود. ساختار زمانبندی آن در نگاه اول ساده است، اما مدیریت محیط اجرای دستورات و عیبیابی برخی وظایف میتواند دردسرساز شود. در توزیعهای مدرن لینوکس که از systemd بهره میبرند، systemd timer امکانات گستردهتری برای زمانبندی و مدیریت سرویسها فراهم میکند.
برای مشاهده تایمرهای systemd میتوانید از دستور زیر استفاده کنید:
systemctl list-timers
اگر بخواهید وضعیت یک سرویس یا تایمر مشخص را بررسی کنید، دستور systemctl status اطلاعات بیشتری در اختیار شما قرار میدهد:
systemctl status motd-news.service
یکی از مزیتهای مهم systemd timer این است که با سایر اجزای systemd یکپارچه است. بنابراین میتوانید وابستگیها، وضعیت سرویس، لاگها و شرایط اجرای وظیفه را در یک چارچوب مشخص مدیریت کنید.
البته این موضوع به معنای حذف کامل cron نیست. cron همچنان در بسیاری از سیستمها کار میکند و برای وظایف ساده انتخاب قابل قبولی است. اگر یک سرور قدیمی دارید یا اسکریپتهای زیادی به crontab وابسته هستند، صرفاً به دلیل قدیمی بودن cron نیازی به مهاجرت فوری ندارید.
در macOS نیز جایگزین اصلی cron برای بسیاری از وظایف زمانبندیشده، launchd است و نه systemd. بنابراین اگر با هر دو سیستمعامل لینوکس و macOS کار میکنید، بهتر است ابزار زمانبندی متناسب با سیستمعامل را بشناسید.
۲. ifconfig؛ برای مدیریت شبکه از ip استفاده کنید
ifconfig سالها یکی از مهمترین دستورهای لینوکس برای مشاهده و تنظیم رابطهای شبکه بود. کاربران با اجرای آن میتوانستند اطلاعات مربوط به کارت شبکه، آدرس IP و وضعیت رابطهای شبکه را مشاهده کنند.
امروزه مجموعه ابزارهای iproute2 جایگاه بسیار مهمتری در مدیریت شبکه لینوکس دارد و دستور ip ابزار مدرنتری برای انجام بسیاری از کارهایی است که در گذشته با ifconfig انجام میشد. مستندات فعلی ifconfig نیز برای برخی اطلاعات مربوط به لینک شبکه، استفاده از ip link را توصیه میکنند.
برای مشاهده رابطها و آدرسهای شبکه میتوانید از این دستور استفاده کنید:
ip address
یا نسخه کوتاهتر آن را اجرا کنید:
ip addr
مزیت ip فقط جایگزین شدن با ifconfig نیست. این دستور مجموعه گستردهای از قابلیتهای مرتبط با آدرسدهی شبکه، رابطها، مسیرها و تنظیمات شبکه را در اختیار مدیر سیستم قرار میدهد.
به عنوان مثال، برای مشاهده جدول مسیریابی میتوانید از این دستور استفاده کنید:
ip route
این رویکرد باعث میشود به جای یادگیری چند ابزار قدیمی جداگانه، مجموعهای منسجم از دستورهای ip را برای مدیریت شبکه بشناسید.
البته اگر فقط میخواهید آدرس IP عمومی خود را ببینید، استفاده از یک سرویس اینترنتی نیز ممکن است ساده باشد؛ اما هنگام عیبیابی شبکه بهتر است به ابزارهای محلی وابسته باشید تا در صورت قطع اینترنت همچنان بتوانید وضعیت شبکه را بررسی کنید.
۳. nslookup؛ برای عیبیابی DNS سراغ dig بروید
nslookup یکی از شناختهشدهترین ابزارهای خط فرمان برای بررسی DNS است. این ابزار میتواند برای پیدا کردن آدرس IP مرتبط با یک دامنه یا بررسی پاسخهای DNS استفاده شود.
با این حال، اگر هدف شما عیبیابی دقیق DNS باشد، dig معمولاً گزینه کاملتری است. این ابزار اطلاعات بیشتری درباره درخواست DNS و پاسخ سرور ارائه میکند و برای بررسی رکوردهای مختلف DNS انعطاف بیشتری دارد.
برای یک بررسی ساده میتوانید نام دامنه را به dig بدهید:
dig intotech.ir
اگر فقط پاسخ کوتاه و آدرس IP را میخواهید، میتوانید از گزینه +short استفاده کنید:
dig +short intotech.ir
مزیت اصلی dig زمانی مشخص میشود که بخواهید رکورد مشخصی مانند MX یا TXT را بررسی کنید:
dig MX intotech.ir
یا:
dig TXT intotech.ir
در چنین شرایطی خروجی dig اطلاعات بسیار بیشتری در اختیار شما میگذارد و برای تحلیل مشکلات DNS کاربردیتر است.
با این حال، یک نکته مهم وجود دارد: وضعیت nslookup را نباید بدون توضیح «کاملاً منسوخ» در نظر گرفت. این ابزار همچنان روی بسیاری از سیستمها وجود دارد و برای بررسیهای ساده DNS کاملاً کاربردی است. بنابراین توصیه اصلی این است که برای عیبیابی حرفهایتر DNS، dig را یاد بگیرید؛ نه اینکه تصور کنید nslookup دیگر روی هیچ سیستمی نباید اجرا شود.
۴. neofetch؛ Fastfetch جایگزین سریعتر و فعالتری است
اگر تصاویر ترمینال لینوکس را در اینترنت دیده باشید، احتمالاً لوگوی بزرگ توزیع لینوکس را در کنار اطلاعات سختافزار و نرمافزار سیستم مشاهده کردهاید. برای سالها neofetch یکی از محبوبترین ابزارها برای نمایش چنین اطلاعاتی بود.
اما وضعیت neofetch تغییر کرده است. مخزن اصلی این پروژه در آوریل ۲۰۲۴ آرشیو شد و دیگر در حالت توسعه فعال قرار ندارد. بنابراین استفاده از آن همچنان ممکن است، اما برای یک سیستم جدید بهتر است ابزار دارای نگهداری فعال را انتخاب کنید.
در حال حاضر Fastfetch یکی از شناختهشدهترین جایگزینهای neofetch است. مخزن رسمی Fastfetch آن را ابزاری مشابه neofetch برای نمایش اطلاعات سیستم معرفی میکند که با تمرکز بر عملکرد و قابلیت شخصیسازی توسعه یافته و همچنان بهصورت فعال نگهداری میشود.
برای اجرای آن کافی است دستور زیر را وارد کنید:
fastfetch
Fastfetch میتواند اطلاعاتی مانند سیستمعامل، کرنل، پردازنده، کارت گرافیک، رم، فضای ذخیرهسازی، محیط دسکتاپ و بسیاری از مشخصات دیگر را نمایش دهد. همچنین امکان شخصیسازی گسترده خروجی آن وجود دارد.
یکی از دلایل مهم انتخاب Fastfetch نسبت به neofetch همین وضعیت توسعه است. neofetch هنوز روی سیستمهای مختلف قابل اجراست، اما مخزن اصلی آن آرشیو شده است؛ در مقابل، پروژه Fastfetch همچنان بهروزرسانی میشود.
بنابراین اگر فقط میخواهید اطلاعات سیستم خود را با ظاهری زیبا در ترمینال ببینید، بهتر است به جای نصب یک پروژه متوقفشده، Fastfetch را انتخاب کنید.
۵. scp؛ برای انتقالهای پیچیدهتر rsync را امتحان کنید
scp یا Secure Copy یکی از سادهترین روشها برای انتقال فایل از طریق SSH است. این دستور برای کپی کردن یک فایل از سیستم محلی به سرور یا برعکس بسیار کاربردی است.
در استفادههای ساده، scp هنوز هم بسیار راحت است. به عنوان مثال:
scp foo.txt user@some-computer:/path/to/remote/foo.txt
اما وقتی با تعداد زیادی فایل یا پوشههای بزرگ سروکار دارید، rsync میتواند انتخاب مناسبتری باشد. دلیل اصلی این موضوع این است که rsync میتواند تفاوت بین فایلهای محلی و مقصد را بررسی کند و فقط بخشهای موردنیاز را انتقال دهد.
یک نمونه ساده از استفاده rsync:
rsync foo.txt user@some-computer:/path/to/remote/foo.txt
برای انتقال یک پوشه نیز میتوانید از گزینه -a استفاده کنید:
rsync -a my-folder/ user@some-computer:/path/to/remote/my-folder/
مزیت اصلی زمانی دیده میشود که بخواهید همان مجموعه فایلها را بارها بین دو سیستم همگام کنید. در چنین شرایطی rsync لازم نیست هر بار همه فایلها را دوباره منتقل کند و میتواند فقط تغییرات موردنیاز را ارسال کند.
یک نکته مهم درباره وضعیت فعلی scp این است که عبارت «scp منسوخ شده و باید حتماً با rsync جایگزین شود» بیش از حد سادهسازی شده است. scp هنوز بخشی از OpenSSH است و در بسیاری از سناریوهای ساده انتخاب مناسبی محسوب میشود. حتی در نسخههای جدید OpenSSH، scp بهطور پیشفرض از پروتکل SFTP برای انتقال استفاده میکند، هرچند رابط خط فرمان scp حفظ شده است.
بنابراین بهتر است scp را برای انتقالهای ساده کنار نگذارید؛ بلکه برای همگامسازی مکرر و انتقال مجموعههای بزرگ فایل، rsync را به ابزارهای خود اضافه کنید.
۶. netstat؛ برای اطلاعات شبکه از ss استفاده کنید
netstat یکی دیگر از ابزارهای قدیمی شبکه در لینوکس است که سالها برای مشاهده سوکتهای باز، اتصالات شبکه، جدول مسیریابی و آمار شبکه مورد استفاده قرار میگرفت.
مشکل اصلی این ابزار این است که بخشی از مجموعه قدیمی net-tools محسوب میشود. مستندات فعلی netstat نیز صراحتاً آن را تا حد زیادی منسوخ میدانند و ss را به عنوان جایگزین معرفی میکنند. برای برخی عملکردهای خاص نیز دستورهای ip route و ip -s link پیشنهاد شدهاند.
برای مشاهده سوکتهای شبکه میتوانید از ss استفاده کنید:
ss
اگر بخواهید سرویسهایی را که در حال گوش دادن روی پورتها هستند مشاهده کنید، یک دستور رایج به شکل زیر است:
ss -tulpn
در این دستور گزینههای مختلف برای نمایش اتصالهای TCP و UDP و پورتهای در حال گوش دادن استفاده میشوند.
یکی از مزایای ss این است که با زیرساخت جدیدتر شبکه لینوکس یعنی iproute2 هماهنگ است. بنابراین اگر در حال یادگیری مدیریت شبکه در لینوکس هستید، یادگیری ss در مقایسه با netstat سرمایهگذاری بهتری محسوب میشود.
برای کارهای مربوط به جدول مسیریابی نیز بهتر است از دستور مدرن زیر استفاده کنید:
ip route
بنابراین netstat ممکن است هنوز روی بعضی سیستمها نصب باشد، اما در سیستمهای جدید بهتر است ss و مجموعه دستورهای iproute2 را ابزارهای اصلی خود قرار دهید.
۷. which؛ برای فهمیدن نحوه اجرای دستور از type استفاده کنید
which برای بسیاری از کاربران یکی از سادهترین دستورهای لینوکس است. کافی است نام یک فرمان را بعد از آن بنویسید تا مسیر فایل اجرایی مربوط به آن نمایش داده شود.
برای نمونه:
which ls
اما این روش همیشه تصویر کاملی از آنچه شِل هنگام اجرای یک فرمان انجام میدهد ارائه نمیکند. یک نام ممکن است به فایل اجرایی، تابع شِل، alias یا حتی یک دستور داخلی شِل اشاره داشته باشد.
دستور type برای بررسی این موضوع بسیار مناسبتر است:
type ls
اگر بخواهید تمام نمونههای یک دستور را پیدا کنید، میتوانید از گزینه -a استفاده کنید:
type -a ls
این موضوع زمانی اهمیت پیدا میکند که با aliasها یا توابع شِل کار میکنید. به عنوان مثال، اگر نام یک دستور به یک alias اختصاص داده شده باشد، which لزوماً اطلاعات کاملی درباره نحوه تفسیر آن توسط شِل ارائه نمیدهد.
همچنین command -v یکی از گزینههای استاندارد و قابلحمل برای فهمیدن نحوه پیدا شدن یک دستور توسط شِل است. استاندارد POSIX نیز برای command -v رفتاری مشخص در رابطه با نمایش مسیر یا نحوه تفسیر یک نام فرمان تعریف کرده است.
بنابراین اگر هدف فقط پیدا کردن مسیر یک فایل اجرایی است، which هنوز میتواند کار شما را راه بیندازد. اما اگر میخواهید واقعاً بفهمید شِل با یک نام فرمان چه رفتاری خواهد داشت، type اطلاعات مفیدتری ارائه میکند.
کدام دستور را باید به جای which یاد بگیریم؟
برای استفاده روزمره در Bash و بسیاری از شِلهای مشابه، type انتخاب خوبی است. به عنوان مثال:
type cd
این دستور میتواند مشخص کند که cd یک دستور داخلی شِل است؛ موضوعی که استفاده از which ممکن است بهدرستی نشان ندهد.
از طرف دیگر، اگر میخواهید یک راه استاندارد و قابلحمل برای بررسی نحوه resolve شدن یک فرمان در اسکریپتها داشته باشید، command -v گزینه مناسبی است. این دستور بخشی از استاندارد POSIX است و برای همین در اسکریپتهای قابلحمل ارزش بیشتری دارد.
در نتیجه بهتر است which را بهعنوان ابزاری کاملاً ممنوع یا خراب در نظر نگیرید. مسئله این است که برای درک محیط اجرای شِل، ابزارهایی مانند type و command -v اطلاعات دقیقتری در اختیار شما میگذارند.
این تفاوت برای کاربران حرفهای لینوکس اهمیت زیادی دارد؛ زیرا گاهی یک دستور با همان نامی که انتظار دارید اجرا نمیشود و در واقع یک alias یا تابع شِل جایگزین آن شده است.
آیا باید همه این دستورهای قدیمی لینوکس را حذف کنیم؟
خیر. مهمترین نکته این است که «منسوخ»، «قدیمی» و «کمتر توصیهشده» را با یکدیگر اشتباه نگیریم. وضعیت این هفت ابزار یکسان نیست.
به عنوان مثال، neofetch واقعاً با آرشیو شدن مخزن اصلی خود در سال ۲۰۲۴ دیگر پروژهای با نگهداری فعال محسوب نمیشود. netstat نیز در مستندات خود بهعنوان ابزاری عمدتاً منسوخ معرفی شده و ss جایگزین مستقیم آن است.
در مقابل، cron و scp هنوز در بسیاری از سیستمها کاربرد دارند. بنابراین بهتر است به جای حذف عجولانه آنها، کاربرد هر ابزار را در نظر بگیرید. systemd timer برای زمانبندی یکپارچه با systemd مزایای زیادی دارد، اما cron برای وظایف ساده همچنان میتواند کاملاً مناسب باشد.
همین موضوع درباره scp نیز صدق میکند. اگر فقط یک فایل را یک بار به یک سرور منتقل میکنید، استفاده از scp ساده و منطقی است. اگر قرار است یک پوشه بزرگ را بارها همگام کنید، rsync انتخاب قدرتمندتری خواهد بود.
بهترین رویکرد این است که ابزارهای مدرن را یاد بگیرید، اما ابزارهای قدیمی را نیز بشناسید. در دنیای لینوکس، بهخصوص هنگام مدیریت سرورهای قدیمی یا کار با اسکریپتهای موجود، احتمال زیادی دارد که با دستورهایی روبهرو شوید که سالها پیش نوشته شدهاند.
جایگزینهای مدرن این ۷ دستور در یک نگاه
اگر بخواهیم مهمترین تغییرات را خلاصه کنیم، میتوان اینطور به آنها نگاه کرد:
| ابزار قدیمی | جایگزین پیشنهادی | کاربرد |
|---|---|---|
| cron | systemd timer | زمانبندی وظایف |
| ifconfig | ip | مدیریت و بررسی شبکه |
| nslookup | dig | بررسی DNS |
| neofetch | fastfetch | نمایش اطلاعات سیستم |
| scp | rsync | انتقال و همگامسازی فایل |
| netstat | ss | بررسی اتصالات شبکه |
| which | type یا command -v | بررسی نحوه اجرای دستور |
این جدول به این معنا نیست که ابزار سمت راست همیشه و در هر شرایطی باید جایگزین ابزار سمت چپ شود. بلکه هدف این است که هنگام یادگیری لینوکس، گزینههایی را بشناسید که در سیستمهای مدرن کاربرد بیشتری دارند.
برای نمونه، systemd timer در سیستمهای مبتنی بر systemd انتخاب طبیعیتری است، ip و ss ابزارهای اصلیتری برای مدیریت شبکه مدرن هستند و Fastfetch نیز در مقایسه با neofetch از پروژهای فعالتر برخوردار است.
جمعبندی؛ کدام دستورهای لینوکس ارزش یادگیری دارند؟
اگر تازه لینوکس را یاد میگیرید، لازم نیست تمام دستورهای قدیمی را فراموش کنید. بهتر است در کنار آشنایی با ابزارهای قدیمی، نسخههای مدرنتر را نیز یاد بگیرید تا بتوانید در سیستمهای جدید با روشهای استانداردتر کار کنید.
برای مدیریت شبکه، ip و ss را در اولویت قرار دهید. برای مشاهده و مدیریت اطلاعات DNS، یادگیری dig ارزشمند است. اگر به نمایش اطلاعات سیستم در ترمینال علاقه دارید، Fastfetch انتخاب منطقیتری نسبت به neofetch است؛ بهخصوص با توجه به اینکه مخزن اصلی neofetch از سال ۲۰۲۴ آرشیو شده است.
برای زمانبندی وظایف در سیستمهای مبتنی بر systemd نیز systemd timer امکانات بیشتری ارائه میکند. با این حال، cron و scp را صرفاً به دلیل قدیمی بودن کنار نگذارید؛ هر دو هنوز در سناریوهای مشخصی کاربرد دارند.
در نهایت، مهمترین مهارت یک کاربر لینوکس این نیست که صرفاً جدیدترین دستورها را حفظ کند، بلکه باید بداند هر ابزار برای چه کاری طراحی شده و چه زمانی جایگزین مدرنتری انتخاب بهتری است. با چنین رویکردی، هم میتوانید با سیستمهای قدیمی سازگار بمانید و هم از ابزارهای جدیدتر و قدرتمندتر در توزیعهای امروزی لینوکس بهره ببرید.
اینتوتک




