تجربه‌های مفید و کاربردی Linux و Weblogic

این وبلاگ برای به اشتراک گذاشتن تجربه‌های کسب شده مرتبط با سیستم عامل Linux و weblogic می‌باشد.

تجربه‌های مفید و کاربردی Linux و Weblogic

این وبلاگ برای به اشتراک گذاشتن تجربه‌های کسب شده مرتبط با سیستم عامل Linux و weblogic می‌باشد.

۵ مطلب در اسفند ۱۳۹۶ ثبت شده است

  • ۰
  • ۰

Linux Network Monitoring

برای مانیتور کردن ترافیک روی کارت‌های شبکه در لینوکس می‌توانیم از ابزاری مانند iftop و nload استفاده کنیم.

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

# yum install nload

#yum install iftop

خروجی دستور nload به شکل زیر

و خروجی iftop به شکل زیر است:

  • Mahmoud Kazemi
  • ۰
  • ۰

با سلام
برای همه‌ی ما ممکن است پیش بیاید که سروری داشته باشیم که از طریق کارت HBA به استوریج ارتباط داشته باشد و دیسک‌هایی از استوریج به آن present شده باشد. اگر دیسک جدیدی به سیستم عامل present شده باشد، یک راه برای دیدن آن ریبوت کردن سیستم عامل است. ولی این راه راه حلی مناسبی محسوب نمی‌شود.
راه حل بهتر rescan کردن SCSI bus است.

برای این منظور از

echo "- - -" > /sys/class/scsi_host/host<H>/scan

استفاده می‌کنیم.

برای سهولت بیشتر شما می‌توانید package به نام fibreutils را نصب کنید که چند دستور کاربردی را در اختیار شما می‌گذارد:

/usr/bin/adapter_info
/usr/bin/hp_rescan
/usr/bin/lssd
/usr/bin/lssg
/usr/bin/scsi_info

از طریق adapter_info شما قادر خواهید بود مشخصات کارت‌های HBA خود را ببینید

از طریق hp_rescan می‌توانید کار اسکن را روی تمام کارت‌ها از طریق سوئیچ -a انجام دهید

 scsi_info هم مشخصات کاملی از دیسک مورد نظر به شما می‌دهد.

 

  • Mahmoud Kazemi
  • ۰
  • ۰

با عرض سلام مجدد، اگر شما با سیستم‌ها و سرورهای enterprise کار کرده باشید می‌دانید که گاهی ممکن است نیاز باشد تعداد زیادی log را که به طور مثال در یک دایرکتوری هستند را پاک کنید یا حداقل با توجه به زمان بخواهید که لاگ فایل‌های ۵ روز آخر را نگه داشته و باقی را پاک کنید. اگر تعداد فایل‌ها زیاد باشد شما در استفاده از دستور rm با پیغام زیر مواجه می‌شوید:

-bash: /bin/rm: Argument list too long

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

find /u01/app/11.2.0/grid/cdata/xxx-cluster/* -mtime +5 -exec rm -f {} \;

برای اینکه قبل از انجام عمل پاک کردن از فایل‌هایی که قرار است پاک شوند لیستی داشته باشید تا بتوانید آن را چک کنید از دستور زیر استفاده کنید:

find /u01/app/11.2.0/grid/cdata/xxx-cluster/* -mtime +5 -exec ls -lrt {} \;

در دستور find  سوئیچ mtime به معنای زمان modify شدن است. سوئیچ‌های دیگری نیز در find وجود دارد (atime,ctime,…) که بنا به نیاز می‌توان از هریک از آن‌ها استفاده کرد.

نکته: سه نوع timestamp وجود دارد:

  • Access - the last time the file was read
  • Modify - the last time the file was modified (content has been modified)
  • Change - the last time meta data of the file was changed (e.g. permissions)

می‌توانیم دستور بالا را به صورت زیر نیز اجرا کنیم:

find /u01/app/11.2.0/grid/cdata/xxx-cluster/* -mtime +5 -exec ls -lrt {} +

تفاوت exec ls -lrt {} + و exec ls -lrt {} \; :

تفاوت در {} + و {} \; است که با توجه به نیاز باید از یکی از آن‌ها استفاده کرد. {} + تمام خروجی دستور find را به صورت یکجا به ls می‌دهد ولی {} \; تک تک خروجی‌های find را به صورت یک به یک به ls می‌دهد.

 

توضیحات بیشتر در مورد تفاوت در

https://askubuntu.com/questions/339015/what-does-mean-in-a-linux-command

  • Mahmoud Kazemi
  • ۰
  • ۰

با سلام و عرض ادب، مسئله ای دیگه‌ای که اکثر ادمین‌ها با آن درگیر هستند، اجرای یک دستور است که ممکن است زمان زیادی نیاز داشته باشد و همواره با مسائلی از قبیل قطع شدن شبکه و یا time out  شدن ارتباط آن‌ها با سرور روبرو هستند. از اینرو به معرفی یک utility به نام screen می‌پردازیم:

طرز کار این برنامه بسیار ساده است. برای شروع قبل از زدن دستور مورد نظر، می‌بایست دستور screen  زده شود. پس از آن می‌توان دستورات مورد نظر را زد و حتی shell موجود را بست (دستور مورد نظر در background اجرا خواهد شد).

حال شما قادر خواهید بود در shell جدیدی (البته با همان کاربر) دستور خود را به foreground برگردانید.

با یک مثال ساده کار را جلو می‌بریم:

با نرم‌افزاری مانند putty به سرور موردنظر متصل شوید و دستور screen را بزنید:

#screen

سپس دستور top را بزنید:

#top

Putty خود را ببندید و یا برای Detach کردن دستور از shell از ctrl+A و در ادامه دکمه‌ی d استفاده کنید. در همین لحظه که شما Putty را بسته‌اید دستور top در سرور در حال اجرا است. شما می‌توانید با استفاده از یک shell  جدید و دستور screen -ls لیست screenهای خود را ببینید و با دستور  screen -r screen_id دستور را به shell جدید منتقل کنید.

#screen -ls

There is a screen on:

                26319.pts-3.mahmoud-pc (Detached)

1 Socket in /var/run/screen/S-mahmoud.

ما می‌توانیم بدون در نظر گرفتن shell قبلی، در shell جدید دستور top را ظاهر کنیم. برای این منظور ابتدا باید Detach انجام شود (درصورت باز بودن shell قبلی و Attached بودن دستور) و پس از آن دستور Attach مجدد.

 

#screen -dr 26319.pts-3.mahmoud-pc

سوئیچ d وظیفه‌ی Detach کردن و r وظیفه‌ی Attach کردن مجدد را به عهده دارند و 26319.pts-3.mahmoud-pc نشان دهنده‌ی screen id است.
شما برای kill کردن screen خود بدون باز کردن و Attach کردن آن می‌توانید از دستور زیر استفاده کنید:


 screen -X -S <sessionid> kill


  • Mahmoud Kazemi
  • ۰
  • ۰

ممکن است برای هر کدام از ما پیش بیاید که بخواهیم یک فایل اسکریپت که حاوی پسورد است را روی سیستم عامل قرار دهیم که در زمان‌های مشخص اجرا گردد (این اسکریپت می‌تواند برای اتصال به اوراکل باشد یا انجام کار روی سیستم عامل یا هر موضوع دیگر). clear text بودن این فایل همواره دارای ریسک زیادی است. برای کاهش این ریسک باید فایل اسکریپت رو از حالت clear text در بیاوریم. برای این موضوع از utility به نام shc استفاده می‌کنیم.
پیش نیاز نصب این برنامه
libc.so.6 است پس در ابتدا به نصب آن می‌پردازیم:

#yum install libc.so.6

پس از آن به نصب shc می‌پردازیم ( شایان ذکر است این دستورات روی خانوداه‌ی RedHat6 اجرا شده است و شما باید با توجه به نسخه سیستم عامل خود پکیج‌های مناسب را انتخاب کنید)

#rpm -ivh shc-3.8.6-1.el6.rf.x86_64.rpm

در این مثال می‌خواهیم فایل اسکریپتی به نام program.sh را مورد آزمایش قرار دهیم:

# shc -rT -f program.sh
program.sh.x.c: In function 'chkenv':
program.sh.x.c:927:10: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]

این برنامه دو خروجی به ما می‌دهد که فایل مورد نظر ما پسوند x. به خود می‌گیرد

# ./program.sh.x
Hello world !

 

 

-----------------------------------------------

اخطار:

طی تجربه‌ای که امروز (شهریور ۱۳۹۷) داشتم، پس از اجرای بکاپ اوراکل دیتابیس که در crontab گذاشته بودم و به صورت فایل .x تبدیل شده بود، پس از زدن دستور ps مشاهده کردم که متاسفانه پسورد دیتابیس به صورت clear در نتیجه‌ی دستور ps  مشاهده می‌شد که اصلا امر قابل قبولی برای ما نیست.

بنده سعی در پیدا کردن راهی جدید خواهم بود و به محض یافتن راه جدید آن را با شما دوستان به اشتراک خواهم گذاشت.

 

  • Mahmoud Kazemi