نظارت همزمان بر چند فایل و دستور (MultiTail)

سلام،

بعد از مدت‌ها دوباره مطلبی در مورد برنامه‌های مفید موجود در لینوکس (و یونیکس) آماده کردم. در این مطلب به معرفی دستورات head، tail و نرم‌افزار MultiTail که برای نظارت (مونیتورینگ) دستورات و فایل‌ها به کار گرفته می شوند، پرداخته ام.

دستور head

این دستور برای بدست آوردن اطلاعات ابتدایی (خطوط) بالایی فایل و خروجی های پایپ شده کاربرد دارد. دستور head به صورت پیش فرض ۱۰ خط از اطلاعات را نمایش می دهد. نحوه استفاده از این دستور به صورت زیر است:

head [options] <file_name>

و یا:

command | head

مانند:

ls -tl | head -n5
total 72
drwxr-xr-x+ 12 saeid  staff    408 Jan 15 21:22 Desktop
drwx------+  9 saeid  staff    306 Jan 15 11:23 Downloads
drwx------@ 59 saeid  staff   2006 Jan 11 23:05 Library
drwxr--r--+ 23 saeid  staff    782 Jan  4 18:52 Documents

دستور tail

این دستور کاملا شبیه به دستور head است با این تفاوت که به جای خطوط ابتدایی، اطلاعات خطوط انتهایی را نمایش می دهد. مانند:

man ls | tail -n15
SEE ALSO
     chflags(1), chmod(1), sort(1), xterm(1), compat(5), termcap(5),
     symlink(7), sticky(8)

STANDARDS
     The ls utility conforms to IEEE Std 1003.1-2001 (``POSIX.1'').

HISTORY
     An ls command appeared in Version 1 AT&T UNIX.

BUGS
     To maintain backward compatibility, the relationships between the many
     options are quite complex.

BSD                              May 19, 2002                              BSD

پارامتر -f دستور tail

پارامتر -f دستور tail باعث می شود که این دستور به صورت زنده (live) باقی مانده و اطلاعات اضافه شده به فایل را در لحظه نشان دهد. این پارامتر بیشتر در بررسی فایل های لاگ استفاده می‌شود. مانند:

tail -f -n5 /var/log/apache2/access_log
127.0.0.1 - - [15/Jan/2012:22:30:12 +0330] "GET /~saeid/ HTTP/1.1" 200 -
127.0.0.1 - - [15/Jan/2012:22:30:27 +0330] "GET /~saeid/phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524
127.0.0.1 - - [15/Jan/2012:22:30:26 +0330] "GET /~saeid/phpinfo HTTP/1.1" 200 78141
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] "GET /~saeid/phpinfo HTTP/1.1" 200 78412
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] "GET /~saeid/phpinfo.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1" 200 2524
127.0.0.1 - - [15/Jan/2012:22:31:11 +0330] "GET /~saeid/phpinfo.php?=SUHO8567F54-D428-14d2-A769-00DA302A5F18 HTTP/1.1" 200 2813

* برای خروج از tail -f از ترکیب Ctrl+C استفاده نمایید.

نرم‌افزار MultiTail

این بسته نرم‌افزاری در محیط خط فرمان اجرا شده و به منظور نظارت دستورات و فایل‌ها مورد استفاده قرار می گیرد. مهم‌ترین مزیت MultiTail امکان بررسی هم‌زمان چند فایل و دستور در یک ترمینال است.

نصب MultiTail

برای نصب در اوبونتو/دبیان دستورات زیر را در خط فرمان اجرا نمایید:

sudo apt-get update; sudo apt-get install multitail

برای نصب در مک با استفاده از MacPorts دستور زیر را وارد نمایید:

sudo port install multitail

نحوه استفاده از MultiTail

برنامه MultiTail بسیار انعطاف‌پذیر بوده و قابلیت‌های بسیاری دارد. به عنوان دستور زیر را در نظر بگیرید:

multitail -l 'ping google.com' -l 'ping zebardast.ir'

تصویر زیر خروجی این دستور را نشان می دهد:

نمایش دو دستور Ping در MultiTail

* برای خروج از MultiTail از ترکیب Ctrl+C استفاده نمایید.

حال در کنار این دو Ping یک فایل را نیز به صورت زنده (live) بررسی می کنیم:

multitail -l 'ping google.com' -l 'ping zebardast.ir' /var/log/apache2/access_log

خروجی دستور بالا:

نمایش دو دستور Ping و لاگ آپاچی در MultiTail

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

multitail -l 'ping google.com' -L 'ping zebardast.ir'
PING zebardast.ir (79.175.162.75): 56 data bytes
PING google.com (173.194.69.105): 56 data bytes
64 bytes from 79.175.162.75: icmp_seq=0 ttl=54 time=87.961 ms
64 bytes from 173.194.69.105: icmp_seq=0 ttl=41 time=456.322 ms
64 bytes from 79.175.162.75: icmp_seq=1 ttl=54 time=97.724 ms
64 bytes from 173.194.69.105: icmp_seq=1 ttl=41 time=416.464 ms
64 bytes from 79.175.162.75: icmp_seq=2 ttl=54 time=96.657 ms

از جمله ویژگی‌های MultiTail امکان فیلتر کردن نتایج است. دستور زیر همانند دستور قبلی می باشد با این تفاوت که عبارت 64 bytes from را از خروجی دستور دوم حذف می کند:

multitail -l 'ping google.com' -ke "64 bytes from" -L 'ping zebardast.ir'
PING google.com (173.194.69.105): 56 data bytes
PING zebardast.ir (79.175.162.75): 56 data bytes
64 bytes from 173.194.69.105: icmp_seq=0 ttl=41 time=463.806 ms
 79.175.162.75: icmp_seq=0 ttl=54 time=45.223 ms
64 bytes from 173.194.69.105: icmp_seq=1 ttl=41 time=442.254 ms
 79.175.162.75: icmp_seq=1 ttl=54 time=84.238 ms
64 bytes from 173.194.69.105: icmp_seq=2 ttl=41 time=442.263 ms
 79.175.162.75: icmp_seq=2 ttl=54 time=98.428 ms
64 bytes from 173.194.69.105: icmp_seq=3 ttl=41 time=400.113 ms
 79.175.162.75: icmp_seq=3 ttl=54 time=81.723 ms

پیشنهاد می‌کنم برای مشاهده مثال‌های بیشتر به صفحه Example سایت MultiTail مراجعه کنید.

پیوندها

شاد و پیروز باشید :)

برنامه تلویزیونی صفر و یک با موضوع سیستم عامل های متن باز

سلام :)

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

برنامه صفر و یک

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

از اینکه صدا و سیما بعد از مدت ها بحثی را در زمینه گنو لینوکس آغاز کرده خیلی خوشحالم. در طول ۴۵ دقیقه که به نظر من خیلی کم بود، سعی کردم مفاهیم اصلی و پایه ای گنو/لینوکس را توضیح بدهم.  قرار شد هفته آینده نیز موضوع سیستم عامل های متن باز و آزاد ادامه پیدا کند.

به درخواست دوستان فیلم برنامه که حدود ۴۵ دقیقه است را آپلود کردم.

من حدود ۲۵ اسلاید را برای ارائه آماده کرده بودم که شامل بسیاری از مباحث گنو/لینوکس میشد که متاسفانه بدلیل کمبود وقت فرصت ارائه آن ها را پیدا نکردم. امیدوارم که اگر فرصت دوباره ای پیدا کردم، بحث های مهم تر مانند امنیت، افکت های تصویری و مهاجرت از ویندوز را بیشتر توضیح بدهم.

لینک های مرتبط با برنامه دیروز

پی نوشت

  • فعلا اسلاید مربوط به برنامه رو آپلود نکردم ولی بزودی اون رو هم آپلود می کنم.
  • در آخر ازتون می خوام که انتقادات و پیشنهاداتتون رو بگید. مطمئنا تا وقتی این انتقادات و پیشنهادات نباشه، امکان پیشرفت واقعی هم وجود نداره ;)
  • سرورهای سایت اوبونتو ایران خراب شدن. این هم از شانس بده اوبونتو کاران

از همه دوستانی برام آرزوی موفقیت کرده بودند، خیلی تشکر می کنم 8)
شاد و موفق باشید

بروزرسانی
روز شنبه ۲۷ شهریور ۱۳۸۹ برنامه دوم با موضوع سیستم عامل های متن باز ارائه شد. متاسفانه این برنامه ضبط نشده است.

تجربیات من از ۳ سیستم عامل ویندوز، لینوکس و مک

سلام :)

بعد از مدتی کار کردن با سیستم عامل های مختلف و در آخر با Mac OS X 10.6، تصمیم گرفتم که تجربه شخصی ام را بعد از استفاده از انواع مختلف سه سیستم عامل ویندوز، لینوکس و مک در وبلاگ قرار دهم.

ویندوز

ویندوز

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

ویندوز مزایایی نیز داشت که مهمترین آنها برای من موارد زیر می باشند:

  • کاربرپسند بودن
  • وجود ابزار های بسیار و متنوع
  • وجود بازی های مختلف و زیبا :D
  • در دسترس و عمومی بودن
  • وجود درایورهای سخت افزاری و پشتیبانی از بیشتر سخت افزارها

لینوکس

گنو/لینوکس

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

البته ایراداتی نیز دارد. مهم ترین ایراد آن نبود ابزارهای گرافیکی برای انجام کارهای مختلف و یا ضعیف بودن ابزارهای موجود است. وجود باگ های مختلف در ابزارهای گرافیکی نیز باعث عدم کارایی لازم آنها می شود. مشکل جستجو و دستیابی به اطلاعات نیز نسبت به ویندوز (۷) و به خصوص نسبت به مک واقعا ضعیف است. از طرف دیگر محیط های گرافیکی موجود مانند گنوم یا کی دی ای واقعا User Friendly (کاربرپسند) نیستند. منظور من افکت های تصویری نیست! رنگ بندی، نحوه چیدمان دسکتاپ و… نسبت و ویندوز و مک ضعیف ترند.

مک

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

مک

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

مک نیز مشکلاتی دارد. مثلا خیلی وقت ها شما مجبورید برای انجام دادن کارها از ماوس استفاده کنید در حالی که در ویندوز و لینوکس بسیاری از کارها براحتی با کیبورد قابل انجام می باشند. از طرفی Shortcut های مک بعضی اوقات واقعا سخت هستند. البته بعد از مدتی عادت می کنید :)

عیب دیگر آن گران بودن سخت افزارهای اپل می باشد که البته با نصب مک بر روی سیستم های x86 می توان حل کرد.

و در آخر مک برای من آن قدر مزایا دارد که بتوانم از ایرادات آن چشم پوشی کنم.

دسته بندی سیستم عامل ها و استفاده کنندگان

در صورتی که مجبور به استفاده از سیستم عامل خاصی نمی باشید، می توانید پیشنهاد من برای انتخاب سیستم عامل را در زیر مشاهده کنید:

  • برنامه نویسان
    1. مک
    2. لینوکس
    3. ویندوز
  • طراحان و گرافیست ها
    1. مک
    2. ویندوز
    3. لینوکس
  • علاقمندان به بازی های کامپیوتری
    1. ویندوز
    2. مک
    3. لینوکس
  • سیستم های نسبتا قدیمی و ضعیف تر
    1. لینوکس
    2. ویندوز
    3. مک
  • سرورها
    1. لینوکس
    2. ویندوز
    3. مک
  • سایر استفاده کنندگان عمومی دسکتاپ
    1. مک
    2. ویندوز
    3. لینوکس

پیوند ها

پی نوشت

بزودی تجربیات بیشتر خود را در مورد مک می نوسیم.

بروزرسانی
مک اونقدرها هم که فکر می کردم نتونست من رو راضی کنه. برگشتم به دنیای زیبای گنو/لینوکس :)
موفق و شاد باشید :)

نصب Sun JDK 5 بر روی اوبونتو ۹.۱۰ و ۱۰.۰۴

سلام

بسته   Sun JDK نسخه ۱.۵ یا همان ۵ از مخازن اوبونتو ۹.۱۰ و ۱۰.۴ حذف شده و نسخه ۶ آن جایگزین شده است.

ساده ترین راه برای نصب نسخه Sun JDK 5 افزودن مخازن مربوط به آن در اوبونتو ۹.۰۴ به لیست مخازن ۹.۱۰ و ۱۰.۰۴ می باشد. برای این منظور مراحل زیر را دنبال کنید.

۱- فایل /etc/apt/sources.list را با یک ویرایش گر متن مانند gedit باز کنید:

sudo gedit /etc/apt/sources.list

۲- خطوط زیر را به آخر فایل اضافه کرده و بعد از ذخیره سازی آن را ببندید:

## for sun-java5-jdk
deb http://ir.archive.ubuntu.com/ubuntu jaunty-updates main multiverse

۳- لیست بسته ها را بروز کرده و sun-java5-jdk را نصب کنید:

sudo aptitude update
sudo aptitude install sun-java5-jdk

* روش بالا می توانید برای نرم افزارهای دیگر نیز بکار برید.

روش دیگر برای نصب jdk 5 دانلود کردن بسته ی نرم افزاری و وابسته های آن از سایت packages.ubuntu.com می باشد.

موفق باشید

آشنایی با دستور netstat

سلام :)

netstat خلاصه network statistics، ابزاری خط فرمانی می باشد که به منظور نمایش اطلاعات متنوع در زمینه شبکه مانند اتصالات، جدول routing (جداول هدایت کردن بسته‌ها ) و… را در اختیار قرار می دهد.
این ابزار برای پیدا کردن مشکلات در شبکه و برآوردگر حجم اطلاعات رد و بدل شده در شبکه به عنوان یک اندازه‌گیر عملکرد استفاده می شود.

در زیر مواردی را از استفاده از این دستور مشاهده می فرمایید:

نمایش اطلاعات پورت ها

نمایش تمامی پورت ها
# netstat -a | more
نمایش تمامی پورت های tcp
# netstat -at
نمایش پورت های udp
# netstat -au

نمایش سوکت (Socket) هایی که در وضعیت Listen هستند

لیست پورت هایی که در وضعیت listen هستند
# netstat -l
لیست پورت های tcp که در وضعیت listen هستند
# netstat -lt
لیست پورت های udp که در وضعیت listen هستند
# netstat -lu
لیست پورت های UNIX که در وضعیت listen هستند
# netstat -lx

نمایش آمار برای هر پروتکل

نمایش آمار برای تمامی پورت ها
# netstat -s
نمایش آمار برای پورت های TCP
# netstat -st
نمایش آمار برای پورت های UDP
# netstat -su

نمایش PID و نام برنامه با استفاده از پارامتر -p

پارامتر -p را می تواند با هر یک از موارد بالا ترکیب کرد. این دستور PID و نام برنامه مربوطه را در خروجی netstat چاپ می کند.

# netstat -pt

عدم نمایش نام هاست

برای نمایش آی پی هاست به جای نام آن می توانید از پارامتر -n استفاده نمایید. در صورت استفاده از این پارامتر، سرعت چاپ خروجی دستور netstat به طور محسوسی افزایش می یابد.

# netstat -ptn

نمایش ادامه دار خروجی

در صورت استفاده از پارامتر -c در کنار سایر پارامتر های netstat، بعد از اجرا و چاپ نتایج، از دستور خارج نمی شود و هر چند ثانیه یک بار دستور را دوباره اجرا کرده و خروجی را چاپ می کند. برای خروج Ctrl+c را بزنید.

# netstat -c

نمایش اطلاعات kernel routing

# netstat -r

یافتن برنامه یا پورت با ترکیب با grep

به عنوان مثال برای یافتن ssh های فعال از دستور زیر استفاده می کنیم:

# netstat -ap | grep ssh

و همچنین برای یافتن اطلاعات یک پورت از دستور زیر استفاده می نمایید:

# netstat -an | grep ':80'

نمایش interface های موجود

برای نمایش خلاصه اطلاعات interface های موجود از پارامتر -i استفاده نمایید:

# netstat -i

همچنین برای نمایش اطلاعات بیشتر به ازای هر interface از پارامتر e به همراه i استفاده کنید:

# netstat -ie

منابع
نت‌استات (ویکی پدیای فارسی)

NetStat Official website
Netstat (wikipedia)
UNIX / Linux: 10 Netstat Command Examples

موفق باشید