برچسب: پروسس

  • کشتن همه‌ی پروسس های دیتابیس mysql

    سلام

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

    اگر همچین دستوری رو روی یک دیتابیس slave بزنید، یادتون نره که باید مجدد وارد دیتابیس بشید و کاری کنید که کارش رو ادامه بده (START SLAVE) در غیر اینصورت دیتابیس از سینک خارج خواهد شد.

  • ۲۰ ابزار مانیتورینگ سیستم لینوکس که هر مدیر سیستمی باید با آن آشنا باشد

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

    ۱- top — میزان فعالیت یک پروسه

    برنامه top ابزاری است برای نشان دادن وضعیت پروسه های فعال به صورت آنی و پویا. به صورت پیشفرض لیست برنامه هایی که بیشترین میزان مصرف cpu را دارند نشان داده می‌شود. این لیست هر ۵ ثانیه به روز میشود.

    Fig.01: Linux top command

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

    کلیدهای مهم در هنگام استفاده از برنامه top

    t وظیفه خاموش و روشن کردن قسمت مربوط به نمایش اطلاعات خلاصه را دارد. این اطلاعات به صورت زیر نمایش داده می‌شود.

    Tasks: 180 total,   2 running, 178 sleeping,   0 stopped,   0 zombie

    m وظیفه خاموش و روشن کردن قسمت مربوط به اطلاعات حافظه است. این اطلاعات به صورت زیر نشان داده می‌‌شود.

    Mem:   3993180k total,  3963852k used,    29328k free,   317676k buffers
    Swap:   811208k total,     3532k used,   807676k free,  2387556k cached

    a مرتب کردن اطلاعات براساس بیشترین میزان مصرف منابع سیستم.  برای شناسایی سریع برنامه هایی که بیشترین مصرف رو دارند این گزینه عالی هست.

    f وارد محیطی می شوید که قادر هستید برنامه top رو تنظیم و پیکربندی کنید. اینکه چه ستون هایی در برنامه top به شما نشان داده بشه، از این قسمت قابل کنترل هست (ستون های نمایش داده شده در برنامه کنارشون یک علامت ستاره قرار دارد). همینطور مخفف تمام ستون‌ها در اینجا نمایش داده می‌شود. برای خارج شدن  از Esc استفاده کنید.

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

    z برای روشن و خاموش کردن رنگ

    q برای خارج شدن از برنامه از این حرف استفاده کنید.

    اطلاعات بیشتر

    ۲- vmstat — بررسی فعالیت سیستم، سخت افزار و اطلاعات سیستم

    فرمان vmstat اطلاعات در مورد پروسه‌ها، حافظه، صفحه بندی،‌ بلوک IO و فعالیت cpu را گزارش می‌دهد.

    vmstat 3

    خروجی نمونه:

    vmstat3

    نمایش استفاده از حافظه Slabinfo

    vmstat -m

    دریافت اطلاعات در مورد فعال یا غیرفعال بودن حافظه صفحات

    vmstat -a

    اطلاعات مربوط به هارد دیسک

    vmstat -d

    اطلاعات بیشتر

    ۳- w– پیدا کردن اینکه چه کسی به سیستم متصل است و چه کاری انجام داده است؟

    از این دستور برای گرفتن اطلاعات مربوط به کاربرانی که به سیستم متصل هستند استفاده می شود. اطلاعاتی همچون زمان لاگین شدن کاربران و اینکه چه مدت غیرفعال بوده اند و یا از کدام آی پی وارد ماشین شده اند و میزان استفاده آنها از پردازشگر چقدر بوده، را می توان به کمک این دستور بدست آورد.

    w username

    w enghezi

    خروجی نمونه:

    w-enghezi

    ۴- uptime– چه مدت سیستم در حال کار است؟

    از این دستور می توان مدت زمانی را که سرور در حال کار است را بدست آورد. این دستور اطلاعات مربوط به زمان جاری، مدت زمان کار ماشین، تعداد کاربران متصل به سیستم و متوسط بار سیستم در یک، پنج و ۱۵ دقیقه گذشته را می‌توان بدست آورد.

    uptime

    خروجی:

    uptime

    عدد یک برای متوسط بار به عنوان مقدار بار مطلوب در نظر گرفته شود. این عدد برای سیستم با سیستم فرق می‌کند. برای سیستم تک هسته‌ای این عدد از یک تا سه و برای پردازشگر با قابلیت SMP این عدد ۶ تا ۱۰است.

    ۵- ps — نمایش پروسه‌ها

    دستور ps پروسه های جاری را به صورت ثابت و یک عکس به ما نشان می دهد. بر خلاف دستور top که این عمل را به صورت پویا نشان می‌داد. برای نشان دادن همه پروسه‌ها ما از آرگومان A و یا e استفاده می‌کنیم.

    ps -A

    نمونه خروجی:

    ps-A

    ps مشابه دستور top است با این تفاوت که می تواند اطلاعات بیشتری را به ما نشان دهد.

    نمایش خروجی به فرمت بلند

    ps -Al

    نمونه خروجی:

    ps-Al

    برای روشن کردن حالت فول و کامل (در این حالت آدرس دقیق پروسه‌ای که در حال اجراست نمایش داده می‌شود)

    ps -AlF

    نمونه خروجی:

    ps-AlF

    برای نمایش Treads ( منظور همان LWP و NLWP)

    ps -AlFH

    نمونه خروجی:

    ps-AlFH

    نمایش Treads بعد از انجام پردازش‌ها

    ps -AlLm

    نمونه خروجی:

    ps-AlLm

    نسخه قابل چاپ همه پروسه‌ها بر روی سرور

    ps ax

    نمونه خروجی:

    ps ax

    ps axu

    نمونه خروجی:

    ps aux

    نسخه قابل چاپ پروسه به صورت سلسله مراتبی(درختی)

    ps -ejH

    نمونه خروجی:

    ps -ejH

    ps axjf

    نمونه خروجی:

    ps axjf

    pstree

    نمونه خروجی:

    pstree

    نسخه قابل چاپ امنیتی

    ps -eo euser,ruser,suser,fuser,f,comm,label

    نمونه خروجی:

    ps -eo euser,ruser,suser,fuser,f,comm,label

    ps axZ

    نمونه خروجی:

    ps axZ

    ps -eM

    مشاهده تمام پروسه‌هایی که متعلق به کاربر enghezi می‌باشد

    ps -U enghezi -u enghezi u

    تنظیم خروجی در یک قالب تعریف شده توسط کاربر

    ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
    ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
    ps -eopid,tt,user,fname,tmout,f,wchan

    نمایش شماره پروسه‌ برنامه (در اینجا می‌خواهیم شماره پروسه برنامه فایرفاکس را پیدا کنیم)

    ps -C firefox -o pid=

    یا

    pgrep firefox

    یا

    pgrep -u enghezi firefox

    نمایش نام پروسه‌ای که آی‌دی اون ۴۴۳۹ باشد. (خروجی اسم برنامه رو می‌ده)

    ps -p 4439 -o comm=

    نمایش ۱۰ پروسه‌ای که بیشترین میزان مصرف حافظه رو دارند

    ps -auxf | sort -nr -k 4 | head -10

    نمایش ۱۰ پروسه‌ای که بیشترین میزان مصرف پردازشگر رو دارند

    ps -auxf | sort -nr -k 3 | head -10

    ۶- free — میزان استفاده  از حافظه

    این دستور میزان کل، آزاد و اشغال شده حافظه اصلی و مجازی (سوپ) رو به ما نشون می‌ده. همچنین می‌توانیم میزان بافری رو که توسط کرنل اشغال شده رو ببینیم.

    نمونه خروجی:

    free

    اطلاعات بیشتر: یک و دو و سه

    ۷- iostat —  متوسط بار پردازشگر و فعالیت دیسک

    دستور iostat آمار مربوط به پردازشگر و آمار مربوط به خواندن و نوشتن ابزاری همچون پارتیشن و NFS را به ما نشان می‌هد.

    نمونه خروجی:

    iostat

    اطلاعات بیشتر

    ۸- sar– جمع آوری و گزارش فعالیت سیستم

    فرمان sar برای جمع آوری، گزارش و ذخیره اطلاعات مربوط به سیستم مورد استفاده قرار می‌گیرد. (دو دستور زیر رو سیستم من اجرا نشد!)

    sar -n DEV | more
    sar -n DEV -f /var/log/sa/sa24 | more

    شما همچنین می‌توانید اطلاعات بلادرنگ و مربوط به زمان حال سیستم رو با استفاده از این دستور پیدا کنید.

    sar 4 5

    خروجی نمونه:

    sar45

    اطلاعات بیشتر

    ۹- mpstat–  پردازشگرهای چند هسته‌ای

    این دستور وضعیت هر پردازشگر رو (هر یک از هسته های پردازشگر رو جدا جدا) به ما گزارش می‌ده. و کاربرد اون در پردازشگرهای چند هسته‌ای هست.

    mpstat -P ALL

    دستور اول وضعیت هر ۴ هسته رو برای یک بار به ما گزارش می ده. اما دستور دوم برای هر هسته ۵ بار وضعیت رو چک می کنه و برای هر هسته ۵ گزارش به ما برنامه می‌ده. فاصله گزارش گیری ها ۲ ثانیه هست. این دستور تقریبا مشابه دستور sar می باشد.

    mpstat -P ALL 2 5

    اطلاعات بیشتر

    ۱۰- pmap — پردازش حافظه استفاده شده در سیستم

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

    به عنوان مثال آی‌دی پروسه‌ای به شماره 47394 را در نظر بگیرید.

    pmap -d PID

    خروجی نمونه:

    pmap-d

    خط آخر خروجی این دستور بسیار مهمه.
    mapped: مقدار کل حافظه که به برنامه اختصاص داده شده
    writeable/private: مقدار فضای آدرس‌های خصوصی
    shared: مقدار فضای آدرس این پروسه که با دیگر برنامه ها مشترک است

    اطلاعات بیشتر

    ۱۱ و ۱۲ – netstat و ss — آمار شبکه

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

    اطلاعات بیشتر برای دستور ss و netstat

    ۱۳- iptraf– آمار مربوط به شبکه

    از این دستور برای مانیتورینگ IP شبکه استفاده می‌شود. برنامه به صورت تعاملی و رنگی هست. و واقعا یکی از برنامه هایی هست که استفاده از اون رو به همه پیشنهاد می‌کنم . کلا با کمک این برنامه به راحتی می توان متوجه شد که آیا سیستم شما به صورت مخفیانه  با جای دیگر در ارتباط هست یا خیر؟‌ ویا اگر دوست داشته باشید، با این روش می‌توان به سرورهای اصلی و پشت صحنه یک سایت  دسترسی پیدا کرد.  برای مثال هم اکنون که فیسبوک در ایران بسته شده، جالب است بدانید که مکان محل نگهداری فیلم‌ها در فیسبوکجای دیگری غیر از خود فیسبوک می‌باشد.  با این روش یک برنامه نویس می‌تواند برنامه‌ای بسازد که با گرفتن لینک حاوی فیلم، اقدام به دریافت فیلم کند!‌ برای بدست آوردن سرعت واقعی اینترنت خود نیز می‌توانید ازاین برنامه استفاده کنید. از این برنامه به راحتی می‌توانید اطلاعات زیر را استخراج کنید:

    • آمار ترافیک شبکه توسط اتصال TCP
    • آمارترافیک IP   توسط رابط شبکه
    • آمار ترافیک شبکه توسط پروتکل
    • آمار ترافیک شبکه توسط TCP / پورت UDP و اندازه بسته
    • آمار ترافیک شبکه از طریق آدرس Layer2

    Fig.02: General interface statistics: IP traffic statistics by network interface

    Fig.03 Network traffic statistics by TCP connection

    ۱۴- tcpdump — جزئیات تحلیل ترافیک شبکه

    یک دستور ساده که می‌توان پی به میزان ترافیک روی شبکه برد. با این وجود شما برای استفاده از این برنامه نیاز به داشتن آگاهی در مورد چگونگی کارکرد TCP/IP دارید. برای مثال برای نشان دادن اطلاعات مربوط به ترافیک DNS از دستور زیر استفاده میکنیم.

    tcpdump -i eth1 ‘udp port 53’

    برای نمایش دادن همه بسته‌هایی که از پورت ۸۰ (HTTP) و IP نسخه چهار هستند کار زیر را می‌کنیم. باید کاری کنیم که فقط بسته‌هایی که حاوی فقط اطلاعات و بسته ACKاست نشان داده شود نه برای مثال بسته‌های SYN و FIN.

    tcpdump ‘tcp port 80 and (((ip[2:2] – ((ip[0]&0xf)<<2)) – ((tcp[12]&0xf0)>>2)) != 0)’

    برای نشان دادن همه نشست‌های FTP به 202.54.1.5 از دستور زیر استفاده کنید.

    tcpdump -i eth1 ‘dst 202.54.1.5 and (port 21 or 20’

    برای نمایش همه نشست‌های HTTP به 192.168.1.5 از دستور زیر سود می‌جوییم.

    tcpdump -ni eth0 ‘dst 192.168.1.5 and tcp and port http’

    این دستورم که خودم نفهمیدم چی کار می‌کنه  براتون می‌زارم. بلکه یه روز ازش رمزگشایی شد

    tcpdump -n -i eth1 -s 0 -w output.txt src or dst port 80

    ۱۵- strace — صدا زدن سیستم

    برای اشکال زدایی وب سرور و پیدا کردن عیوب بسیار کار گشاست! اما چون خودم هیچی از این دستور نفهمیدم، شما رو مستقیم به چگونگی کارکرد این دستور ارجاع می‌دم :)

    ۱۶- فایل سیستم proc — آماری  از کرنل

    فایل‌های درون فولدر proc (در آدرس روت) حاوی اطلاعات دقیق در مورد دستگاه‌های سخت افزاری مختلف و سایر اطلاعات هسته لینوکس است. به عنوان مثال موارد زیر رو در نظر بگیرید.

    cat /proc/cpuinfo
    cat /proc/meminfo
    cat /proc/zoneinfo
    cat /proc/mounts

    اطلاعات بیشتر

    ۱۷- Nagios– مایتورینگ سرور و شبکه

    Nagios یکی از محبوب ترین برنامه‌های مانیتورینگ شبکه و سیستم کامپیوتری می‌باشد. شما به آسانی می‌توانید بر تمام میزبان‌ها، تجهیزات شبکه و سرویس‌ها نظارت کنید. برنامه هنگامی که به مشکلی برخورد به شما پیغام هشدار می فرستد و همچنین زمانی که اوضاع رو به راه شد، باز هم یک هشدار می‌دهد. حالا یه برنامه به اسم فن ساخته شده که تمام کارا رو برای راه اندازی این Nagios اتومات می‌کنه (Fully Automated Nagios). این برنامه سعی کرده همه برنامه‌هایی که توسط جامعه nAgios ساخته شده رو فراهم کنه. تمام این ابزار همه در یک فایل ایزو به حجم یک سی‌دی قابل دریافت هست.

    ۱۸- Cacti– ابزار مانیتورینگ مبتنی بر وب

    برای چگونگی نصب و تنظیم و استفاده از این ابزار کافیست به اینجا نگاهی بیندازید.

    ۱۹- کی‌دی‌ای سیستم گارد– گزارش دهی و نموادار فعلی سیستم

    KSysguard ابزاری قوی برای مانیتورینگ در محیط کی‌دی‌ای می‌باشد.

    Fig.05 KDE System Guard

    اطلاعات بیشتر

    ۲۰- گنوم سیستم مانیتور– گزارش دهی به همراه ترسیم نمودار از وضعیت موجود سیستم

    Fig.06 The Gnome System Monitor application

    و ابزارهای اضافی دیگر

    Nmap: اسکن در سرور شما برای پیدا کردن پورت‌های باز
    Lsof: لیست پرونده‌های باز، و اتصالات شبکه
    Ntop: ابزاری مبتنی بر وب مشابه دستور top . وضعیت شبکه رو با این دستور به خوبی می‌توان مشاهده کرد.
    Conky: ابزار قدرتمند دیگری برای مانیتورینگ سیستم در محیط X
    GkreIIM: ابزاری خوب برای مانیتورینگ پردازشگر، رم، هارد، شبکه و چیزای زیاد دیگه
    Vnstat: یک کنسول مبتنی بر وب برای مانیتورینگ شبکه هست.
    Htop: ورژن بهبود یافته دستور top هست که پروسس‌ها رو به صورت درختی می‌تونه نشون بده.
    Mtr: برنامه‌ای که کار چند تا برنامه مثل پینگ و تریس روتر رو همگی با هم یه جا می‌تونه انجام بده.

    منبع

    پی‌نوشت: این مطلب رو چند هفته پیش قصد ترجمه داشتم که تا امروز کار برد. جالبه امروز سایت نرم‌افزارهای آزاد یه ترجمه نصف و نیمه از این مطلب رو تو سایتش گذاشته