۱۰ دستور مهم و کاربردی در لینوکس
امروزه یادگیری دستورات پایهای و اساسی لینوکس برای هر مدیر سیستم و یا حتی توسعه دهندهای ضروری است. دستورات و بستههای نرم افزاری مختلفی وجود دارد که میتوانند به ما در توسعه، رفع اشکال و بهینه سازی برنامههایمان یاری رساند. شما چه یک توسعه دهندهی تازه کار باشید و چه یک برنامه نویس حرفهای، ۱۰ دستور زیر میتواند به شما در درک بهتر چگونگی کارکرد برنامهها و سیستمتان کمک کند.
۱) tail
دستور tail آخرین قسمت محتویات یک فایل را نمایش میدهد. برای رفع اشکال برخی از سرویسها، ما به تمام خطوط ذخیره شده در فایلهای log نیاز نداریم. بلکه قصد داریم تا آخرین وضعیت برنامه یا سرویس مورد نظر خود را بررسی کنیم. برای مثال، با استفاده از دستور tail میتوان مشاهده نمود زمانی که یک درخواست به وب سرور nginx فرستاده میشود چه اتفاقاتی رخ میدهد:
tail -f /var/log/nginx/access.log 127.0.0.1 - - [07/Jan/2018:12:44:25 +0330] "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 Firefox/57.0" 127.0.0.1 - - [07/Jan/2018:12:45:26 +0330] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0" 127.0.0.1 - - [07/Jan/2018:12:45:31 +0330] "GET / HTTP/1.1" 200 612 "-" "curl/7.47.0"
با کمک گزینه f تمام اتفاقات را به صورت آنی میتوان مشاهده نمود. همچنین میتوانیم با استفاده از tail چندین خط آخر یک فایل را مشاهده کنیم:
tail -n 100 /var/log/nginx/access.log
۲) python -m json.tool / jq
گاهی اوقات ممکن است شما بخواهید خروجی یک فایل JSON دریافتی را به فرمت ساده تر و مناسب تری نمایش دهید. پایتون دارای یک کتابخانه است که میتواند به ما در این امر کمک کند. با استفاده از دستور python -m json.tool میتوان این کار را انجام داد. بدین منظور خروجی یک فایل JSON را با استفاده از | (pipe) به عنوان ورودی به این دستور میدهیم. برای مثال فایلی با محتویات زیر در اختیار داریم:
cat test.json {"title":"Person","type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"age":{"description":"Age in years","type":"integer","minimum":0}},"required":["firstName","lastName"]}
حال خروجی این دستور را به عنوان ورودی دستور مورد نظر خود قرار میدهیم:
cat test.json | python -m json.tool { "properties": { "age": { "description": "Age in years", "minimum": 0, "type": "integer" }, "firstName": { "type": "string" }, "lastName": { "type": "string" } }, "required": [ "firstName", "lastName" ], "title": "Person", "type": "object" }
یک راه ساده تر استفاده از ابزاری با نام jq است. (این ابزار را میتوانید به سادگی با کمک مدیر بستهی توزیع خود نصب کنید) برای نمایش فایل JSON به صورت بالا با استفاده از این ابزار به صورت زیر عمل میکنیم:
cat test.json | jq
۳) grep
دستور grep الگوهای وارد شده در فایلها را جستجو کرده و آنها را نمایش میدهد. با استفاده از این دستور میتوان به جستجوی عبارات و کلمات مورد نظر در فایل log مربوط به سرویسهای مختلف یا سایر فایلها پرداخت. برای مثال در صورتی که بخواهیم زمان شروع Apache Tomcat را بدست آوریم، میتوانیم خروجی دستور cat را به عنوان ورودی ابزار grep با الگوی مورد نظر قرار دهیم و نتیجه را مشاهده کنیم:
cat tomcat.log | grep org.apache.catalina.startup.Catalina.start 01-Jul-2017 18:03:47.542 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 681 ms
۴) ps
دستور ps نشان دهندهی وضعیت پردازشهای سیستم است و میتوان پروسههای در حال اجرا را مشاهده نمود. برای مثال در صورتی که قصد دارید وضعیت یک پروسهی در حال اجرای Tomcat را بررسی کنید، میتوانید از دستور ps برای بدست آوردن شمارهی پروسهی مورد نظر استفاده کنید:
ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 2 18:55 ? 00:00:02 /docker-java-home/jre/bi root 59 0 0 18:55 pts/0 00:00:00 /bin/sh root 75 59 0 18:57 pts/0 00:00:00 ps -ef
همچنین میتوان خروجی این دستور را به grep دهیم:
ps -ef | grep tomcat root 1 0 1 18:55 ? 00:00:02 /docker-java-home/jre/bi
۵) env
دستور env به شما این قابلیت را میدهد که متغیرهای محلی سیستم را مشاهده و بررسی کرده و یا برخی از آنها را تغییر دهید:
env HOME=/root DB_NAME=test PATH=/usr/local/bin:/usr/local/sbin LANG=C.UTF-8 PYTHON_VERSION=3.5.2 PWD=/ DB_URI=mongodb://database:27017/test
۶) top
ابزار top تمام پروسههای در حال اجرای سیستم را نمایش داده و وضعیت آنها را بروز میکند. این دستور میزان حافظه و CPU مورد استفاده برای هر برنامه را نیز نشان میدهد. با فشردن دکمهی C میتوانیم نام برنامهها و دستور کامل آنها را برای اجرا مشاهده کنیم.
۷) netstat
با استفاده از ابزار netstat میتوان وضعیت شبکه را مشاهده کرد. این دستور پورتهای فعال شبکه و اتصلات ورودی آنها را نمایش میدهد. در صورتی که این دستور روی سیستم شما نصب نیست، میتوانید بستهی net-tools را نصب کنید. با استفاده از netstat و گزینههای مربوط به پورت، پروتکل و پروسهی آن، میتوان مشاهده نمود که وب سرور Apache HTTP روی پورت ۸۰ فعال است.
برای آشنایی بیشتر با دستور netstat و کاربردهای آن میتوانید این مقاله را بخوانید.
۸) ip address
برای استفاده از این دستور باید بستهی iproute2 را روی سیستم خود نصب کنید. در صورتی که از این دستور بدون هیچ گزینهی دیگری استفاده کنید، رابط ها و آدرس IP هر کدام از آن ها به شما نمایش داده میشود. همچنین میتوان آدرس IP یک رابط خاص را نیز بدست آورد.
۹) lsof
دستور lsof لیست تمام فایلهای باز سیستم به همراه برنامهی مربوط به آنها نشان میدهد. اگر برنامهی شما در حال نوشتن روی یک فایل بوده یا اتصال شبکهای را باز کند، lsof آن را به عنوان یک فایل نشان میدهد. همانند netstat، با کمک lsof نیز میتوان برای بررسی پورتهای باز سیستم استفاده نمود. در عکس زیر مشاهده میکنید که Apache روی پورت ۸۰ فعال است. همچنین از این دستور برای بررسی شماره پروسهی Apache و مشاهدهی فایل اجرایی مربوط به آن استفاده کرد.
۱۰) df و du
با استفاده از دستور df میتوان مقدار فضای خالی سیستم را مشاهده نمود. گزینه h در این دستور کمک میکند تا این فضا را خوانا تر (human-readable) ببینیم.
برای اینکه بیابیم کدام یک از فایلها بیشترین فضای سیستم ما را اشغال کردهاند، میتوانیم از دستور du استفاده کنیم. برای مثال در صورتی که بخواهیم ببینیم کدام فایل log بیشترین فضا را اشغال کرده است، دستور زیر را وارد میکنیم:
du -sh /var/log/* 1.8M /var/log/anaconda 384K /var/log/audit 4.0K /var/log/boot.log 0 /var/log/chrony 4.0K /var/log/cron 4.0K /var/log/maillog 64K /var/log/messages
گزینهی s حجم کل فایلها و مسیرها را نشان میدهد.
بکارگیری این دستورات برای رفع مشکل سیستم و درک دلیل عدم کارکرد یک برنامه میتواند به شما کمک کند. شما میتوانید با مراجعه به صفحهی راهنمای تمام این دستورات (manual page) اطلاعات مفید و کامل تری در مورد آنها بدست آورده و به راحتی سیستم خود را مدیریت کنید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.