نظارت همزمان بر چند فایل و دستور (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 مراجعه کنید.

پیوندها

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

آشنایی با دستور 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

موفق باشید

نمایش چند خط از وسط یک فایل متنی (در لینوکس)

Linux
سلام

فرض کنید که شما یک فایل متنی ۱۰ مگابایتی دارید. مطمئنا باز کردن این فایل در برنامه هایی مانند gedit مشکل خواهد بود. بخصوص زمانی که شما قصد مشاهده چند خط از وسط این فایل را دارید.
دستور head برای نمایش چند خط اول یک فایل استفاده می شود. مانند:

$ head FILE

دستور tail برای نمایش چند خط آخر فایل استفاده می شود. مانند:

$ tail FILE

با استفاده از پارامتر n شما می توانید تعداد خطوط را برای نمایش تنظیم کنید. مانند:

$ tail -n25 FILE

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

$ more +num10 FILE | head -n20

دستور بالا خطوط ۱۰ تا ۳۰ (شامل ۲۰ خط) را برای شما نمایش می دهد.

البته مطمئنا در صورت استفاده از ویرایشگر هایی مانند vi کار شما بسیار ساده تر و انعطاف پذیرتر خواهد بود.

موفق باشید

Guake ترمینالی برای گنوم


سلام :)

استفاده از ترمینال برای کاربران لینوکس بسیار حیاتی است. وجود یک ترمینال که با فشردن یک دکمه ظاهر شود، در مواقعی می تواند مفید باشد.
بسیاری از کاربران لینوکس با ترمینال Yakuake در محیط KDE آشنا هستند. Guake ترمینالی مانند Yakuake برای محیط Gnome است.

Guake terminal logo

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

بعد از نصب برای اجرای Gauke عبارت guake را در ترمینال وارد کنید و یا از طریق منو Applications->Accessories->Guake Terminal آنرا اجرا کنید.

به صورت پیش فرض از دکمه F12 برای مشاهده ترمینال Guake استفاده کنید.

guake

برای اجرای Guake به صورت پیش فرض در اوبونتو، به منو System->Preferences->Sessions بروید. بر روی دکمه Add کلیک کنید و عبارت guake را در قسمت command وارد کنید.

به نقل از guake-terminal.org:

Have you ever been in need of a console terminal, but thought that switching windows is not smart enough for you?
I think that need is the mother of invention. Since I use GNOME I always wish for some application in GTK that are already in QT/KDE. But I’d rather use GTK so, why not just create my own drop-down terminal?
Guake follows the same line of Yakuake and Tilda, but I am trying to meld the best of them into a single GTK-based application.
Guake has been written from scratch.

In a nutshell, Guake is a drop-down terminal for Gnome Desktop Environment, so you just need to press a key to invoke him, and press again to hide.

guake

لینک ها
سایت رسمی Guake Terminal
سایت رسمی Yakuake

موفق باشید

ترمینال دلچسب و کاربردی – Interesting Terminal

terminal
سلام :)

مدتی است که در وبلاگ های کاربران اوبونتو بحثی با عنوان ترمینال دلچسب – Interesting Terminal – شروع شده است. من سعی کردم تا در زیر مجموعه ای از این دستورات را گردآوری کنم. امیدوارم که برای همه جذاب باشد.

سرگرمی

  • دیدن فیلم جنگ ستارگان در ترمینال*:
    telnet towel.blinkenlights.nl
  • گپ کردن (چت؟) با یک ربات*:
    telnet the-funk.net 7000
  • چاپ یک متن به صورت کد های اسکی:
    banner

    خروچی دستور banner s را در زیر مشاهده می کنید:

              ####      ##
              ####    ######
              ##     ########
              #     ####     #
              #     ####     #
              #     ####    ##
              #    ####    ##
               ########   ####
                #####
    
  • مدت زمانی که کامپیوتر شما بیدار (روشن) شده است:
    uptime
  • ماشین حسابی با دقت زیاد:
    bc

    خروجی دستور ۹ به توان ۴۴۳ را در زیر می بینید(!):

    9^443
    536329495411017457181615860167481639195793465136108262
    083935380467803470514792345854939020498218762318890057
    884685019611146623834272881918524947704890527556209922
    107062886416263149790427475010930333210959688740412529
    491454615283487104034160444796201337951600120037493582
    611810168389115748966812754618799019578672606249866923
    340855095438605593782686458784065105108803866128317612
    934724308569124005556047792446076115970655129
    

(ادامه…)