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

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

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

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

  • ۰
  • ۰

tar hidden files in linux

شما اگر دستور tar  را با استفاده از * اجرا کنید، tar فایل‌های hidden را نادیده می‌گیرد و آن‌ها را tar نمی‌کند. راه حل ساده‌ی این موضوع استفاده از "." به جای "*" است.

 

#(cd /home/mahmoud/Desktop ;tar cvf - .) | (cd /root/; tar xvf -)

 

دستور بالا محتویات Desktop کاربر mahmoud را در /root کپی می‌کند (شامل فایل‌های hidden در Desktop)

 

ولی اگر دستور به شکل زیر استفاده می‌شد تنها فایل‌های غیرhidden را کپی می‌کرد:


#(cd /home/mahmoud/Desktop ;tar cvf - *) | (cd /root/; tar xvf -)

  • Mahmoud Kazemi
  • ۰
  • ۰

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

ابزار مناسبی با نام pv جهت این پایش وجود دارد. این ابزار یک progress bar و copy rate و میزان کپی انجام شده و میزان زمان سپری شده را به شما نشان می‌دهد.

syntax کلی این ابزار به شکل زیر است:

pv filename
pv filename > /path/to/output
pv options filename | command1
pv options filename | command1 > output.file
pv filename | command1
command1 | pv | command2
pv -options input.file | command1 | pv -options > output.file


ما در اینجا به چند مثال ساده و کاربردی اشاره خواهیم کرد:

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

اصلاحیه:

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

#SRC="/source/folder"; TRG="/target/folder/"; tar cf - "$SRC" | pv -s $(du -sb "$SRC" | cut -f1) | tar xf - -C "$TRG"

اگر می‌خواهید یک فایل با نام RealPerson_History_970508.rar را به نام Real.rar کپی کنید می‌توانید از دستور زیر استفاده کنید:

[root@mahmoud-pc ‍‍‍~]# pv RealPerson_History_970508.rar > Real.rar
23MB 0:00:02 [ 106MB/s] [========>                                                                                                            ]  5% ETA 0:00:32

شما می‌توانید با استفاده از سوئیچ L برای دستور کپی transfer rate تعیین کنید :

[root@mahmoud-pc ‍‍‍~]# pv -L 1m RealPerson_History_970508.rar > Real.rar
23MB 0:00:02 [ 106MB/s] [========>                                                                                                            ]  5% ETA 0:00:32

که باعث می‌شود حداکثر سرعت کپی شما ۱مگابایت بر ثانیه باشد.


اگر قصد کپی دایرکتوری را دارید می‌توانید از دستور tar و ترکیب آن با pv  استفاده کنید (مزیت tar این است که جزء ابزارهای backup گیری است و از مزایای این ابزارها بهره می‌برد)


[root@mahmoud-pc~]# (cd /home/mahmoud/ ; tar cf - .) | pv  | (cd /home/testuser ; tar xf -)
61MB 0:00:02 [14.8MB/s] [        <=>                                                                                                                  ]

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


با سپاس




  • Mahmoud Kazemi
  • ۰
  • ۰

ASM configuration to use multipath

ارتباط multipath و oracleasm

برای اینکه شما از قابلیت multipath و یا سرویس‌هایی از این قبیل مانند powerpath برای کاهش ریسک افتادن اوراکل خود می‌خواهید بهره ببرید، تنها نصب و کانفیگ Multipath کافی نمی‌باشد. شما می‌بایست ASM خود را نیز برای کار با سرویس Multipath تطبیق دهید. ما زمانی از Multipath استفاده می‌کنیم که مسیر (path)های زیادی (بیشتر از یک مسیر) از سیستم عامل به دیسک‌های اوراکل برقرار باشد.

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

وقتی دیسکی پشت سرویس Multipath قرار می‌گیرد یک نام مانند mpatha به آن اختصاص می‌یابد که به‌طور مثال دو مسیر sdb و sdc برای دیسک موردنظر موجود می‌باشد. در نتیجه این دیسک در سیستم عامل با سه نام sdb,sdc,mpatha دیده می‌شود. اگر شما asm را برای این منظور کانفیگ نکرده باشید و آن را با کانفیگ پیش‌فرض رها کرده باشید هیچ تضمینی وجود ندارد که به سراغ کدام مسیر برود و از آن استفاده کند. اگر به صورت تصادفی از maptha استفاده کند شما به صورت تصادفی سرویس multipath  را در بازی دارید ولی اگر هر مسیر دیگری را انتخاب کند دیگر شما از قابلیت‌های multipath برخوردار نخواهید بود. برای کانفیگ asm کافی‌ست شما در فایل /etc/sysconfig/oracleasm دو خط زیر را اضافه کنید:

ORACLEASM_SCANORDER="dm"

ORACLEASM_SCANEXCLUDE="sd"

مقادیر موجود بین “” به عنوان prefix درنظر گرفته می‌شوند.

با استفاده از مغیر اول شما اولویت scan دیسک‌های خود را مشخص می‌کنید، به این معنی که به asm می‌گویید که نخست به سراغ مسیرهای multipath برود.

با استفاده از متغیر دوم شما به asm می‌گویید که دیسک‌هایی که با sd شروع می‌شوند را در فرآیند scan نادیده بگیرد و به این ترتیب از اختصاص مسیرهای غیرmultipathی به asm جلوگیری می‌کند.

مشکلی که برای من پیش آمده بود این بود که بعد از کانفیگ asm برای استفاده از multipath ، باز هم asm به سراغ لایه‌ی multipath نمی‌رفت و مسیرهایی از قبیل sdb را به عنوان دیسک asm خود درنظر می‌گرفت. پس از کمی جستجو متوجه شدم فایل /etc/sysconfig/oracleasm در اصل یک symbolic link به فایل /etc/sysconfig/oracleasm-_dev_oracleasm  است که این لینک شکسته شده است. که در ابتدا مجبور به پاک کردن فایل /etc/sysconfig/oracleasm و پس از آن ساخت یک لینک جدید شدم که باعص برطرف شدن مشکل شد.

#ll /etc/sysconfig/oracleasm*

lrwxrwxrwx  1 root root  24 Dec 20  2013 /etc/sysconfig/oracleasm -> oracleasm-_dev_oracleasm

-rw-r--r--. 1 root root 976 May 21  2014 /etc/sysconfig/oracleasm-_dev_oracleasm

 

حال از کجا بفهمیم که asm آیا از سرویس multipath استفاده می‌کند یا خیر؟

دستور

Oracleasm listdisks لیست دیسک‌های asm را به ما می‌دهد.

احتمالا با دستور

Oracleasm querydisk –p

آشنایی دارید. این دستور در اصل لیست دیسک‌های متناظر دیسک‌های ASMی را در سیستم عامل به ما می‌دهد. این دستور در این مورد به شما کمکی نخواهد کرد چرا که مثلا برای شما برای دیسک DATA01 در ASM خروجی با سه خط

DATA01 is a valid disk on mpatha

….                                            On sdb

                                             on sdc

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

با استفاده از سوئیچ d  در دستور Oracleasm querydisk  شما خروجی مانند زیر خواهید یافت

Disk "DATA01" is a valid ASM disk on device [253,200]

و سپس با استفاده از دستورات زیر(و major-minor number)دقیقا مشاهده خواهید کرد که آیا asm در حال حاضر از سرویس multipath شما استفاده می‌کند یا خیر

#cat /proc/partitions | grep "\ 253\ " | grep "\ 200\ "

253      200  461371392 dm-200

                                                                                                                                                                                               

#ll /dev/* | grep dm-200

brw-rw----  1 root disk    253, 200 Sep  2 11:26 /dev/dm-200

lrwxrwxrwx 1 root root 9 Sep  2 11:26 253:200 -> ../dm-200

lrwxrwxrwx 1 root root      9 Sep  2 11:26 mpathcwp1 -> ../dm-200

هماگونه که مشاهده می‌فرمائید در حال حاضر asm از سرویس multipath استفاده می‌کند.

اگر اینگونه نبود شما زمانی که را اجرا می‌کردید نتیجه‌ای مانند زیر می‌یافتید:

# cat /proc/partitions | grep "\ 70\ " | grep "\ 65\ "

  70       65  461371392 sdcw1

که به وضوح می‌گوید که asm مسیر sdcw را برای کار برگزیده است.

  • Mahmoud Kazemi
  • ۰
  • ۰

split big text file

امروز میخواستم یک تجربه ساده را با شما در میان بگذارم. امروز یک تکست فایل با حجم ۲۰ گیگابایت به دستم رسید. باز کردن این فایل بخاطر حجم زیادش با مشکلات و کندی روبرو خواهد شد. حتما دوستان برای رهایی از این مشکل از ابزارهایی مثل head و tail استفاده کرده‌اند. اینبار بنده از ابزار split برای تقسیم این فایل بزرگ به قطعات کوچک‌تر استفاده کردم که از syntax ساده‌ای برخوردار می‌باشد.

Syntax

split [options] filename prefix

ممکنه شما بخواهید فایل خودتون رو بر اساس تعداد خطوط یا حجم فایل تقسیم‌بندی کنید. ولی اگر شما از دستور split با پیش‌فرض‌های default آن استفاده کنید فایل شما رو بر اساس تعداد خطوط (۱۰۰۰) به قطعات کوچک‌تر تقسیم می‌کند و برای Prefix از x استفاده می‌کند (‌به این صورت که بعد از x از aa شروع و به ترتیب ab و .... تا zz را برای فایل‌ها نامگذاری خواهد کرد).

اگر بخواهید فایل خود را بر اساس تعداد خطوط دلخواه تقسیم کنید از سوئیچ l استفاده کنید:

# split -l 200 systemlog
# ll
total 172
-rw-rw-r-- 1 root root 76294 Mar 25 12:02 systemlog
-rw-r--r-- 1 root root 14369 Mar 25 12:16 xaa
-rw-r--r-- 1 root root 12795 Mar 25 12:16 xab
-rw-r--r-- 1 root root 13566 Mar 25 12:16 xac
-rw-r--r-- 1 root root 13681 Mar 25 12:16 xad
-rw-r--r-- 1 root root 13840 Mar 25 12:16 xae
-rw-r--r-- 1 root root 8043 Mar 25 12:16 xaf
# cat xaa | wc -l; cat xab | wc -l; cat xac | wc -l; cat xad | wc -l; cat xae | wc -l; cat xaf | wc -l
200
200
200
200
200
99

و اگر بخواهید بر اساس سایز فایل آن را تقسیم کنیم می‌توانیم از سوئیچ b استفاده کنیم:

# split -b 500MB httpd.log
# ll -lh
total 1.9G
-rw-r--r-- 1 root root 954M Mar 25 12:35 httpd.log
-rw-r--r-- 1 root root 477M Mar 25 12:38 xaa
-rw-r--r-- 1 root root 477M Mar 25 12:38 xab

یا می‌توانید به‌جای MB از GB استفاده کنید.

با استفاده از سوئیچ d می‌توانید از 00 01 02 ... به‌جای aa, ab , ac ,.... به عنوان suffix استفاده کنید:

# split -d -b 200M httpd.log log
# ll -lh
total 1.9G
-rw-r--r-- 1 root root 954M Mar 25 12:35 httpd.log
-rw-r--r-- 1 root root 200M Mar 25 12:58 log00
-rw-r--r-- 1 root root 200M Mar 25 12:58 log01
-rw-r--r-- 1 root root 200M Mar 25 12:58 log02
-rw-r--r-- 1 root root 200M Mar 25 12:58 log03
-rw-r--r-- 1 root root 154M Mar 25 12:58 log04



مرجع:

https://linoxide.com/linux-how-to/split-large-text-file-smaller-files-linux/

  • Mahmoud Kazemi
  • ۰
  • ۰

multipath_configuration

با عرض سلام و ادب
میخواستم یک تجربه جدید که مربوط به سرویس Multipath میشه رو با دوستان در میان بگذارم.

اگر تعداد دیسک‌های present شده به سیستم عامل از یک تعداد بیشتر باشه (البته با توجه به تعداد دیسک * تعداد path برای هر دیسک) باید در کانفیگ فایل multipath در قسمت default گزینه دیگری به نام

defaults {
           max_fds   <VALUE>
          }

اضافه کنید. این کار را باید وقتی انجام دهیم که پیغامی مبنی بر

 multipathd:  error creating pipe for callout: Too many open files

در لاگ نمایان بشه.

توضیحات بیشتر را در زیر می‌توانید بخوانید:


Multipathd requires open file descriptors for each managed path. In the startup script for multipathd (/etc/init.d/multipathd), the maximum number of open file descriptors is increased from the system default of 1024 to 4096. However, in environments with large numbers of LUNs and/or paths to those LUNs, this value may be insufficient. 

As a general rule of thumb, there should be two available file descriptors per path. For example, if 1000 LUNs were available through 4 paths each, multipathd would need 8000 open file descriptors (#LUNs x #paths x 2).

To increase the maximum number of file descriptors, the following entry must be place in /etc/multipath.conf:

  defaults {
           max_fds   <VALUE>
          }

Note - It is very common for no /etc/multipath.conf file to exist. In this case, create the file using only the configuration option listed above. Otherwise, add the max_fds setting to the 'defaults' section of the existing multipath.conf file. If the server is booting from the SAN, run `mkinitrd` to ensure the new multipath.conf is added to the initrd.

After modifying (or creating) the /etc/multipath.conf file, restart multipathd to cause the setting to take effect.

Additional Information

Novell has tested multipathd with 16,000 available LUN/path combinations. As long as the system has enough resources to support the required open files, and the max_fds is set appropriately, large numbers of LUNs and/or paths should work properly.

منبع:
https://www.novell.com/support/kb/doc.php?id=7008051
  • Mahmoud Kazemi
  • ۰
  • ۰

Revolver_For_Chrome

اگر در محیطی کار می‌کنید که تعداد مانیتورهای موجود برای مانیتور کردن OS های شما کم است، در صورتی که برای مانیتور کردن از Browser استفاده می‌کنید می‌‌توانید از Extension ای به نام Revolver برای گوگل کروم استفاده کنید که فایل آن را می‌توانید از اینجا دانلود کنید. شما با دادن زمان به این برنامه می‌توانید google chrome را مجبور کنید در زمان معین بین Tab‌های خود جا بجا شود و شما با داشتن یک مانیتور می‌توانید چند جا را مانیتور کنید.

  • Mahmoud Kazemi
  • ۰
  • ۰

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

What is tmpfs?

Tmpfs also mounted as shared memory /dev/shm. tmpfs is portion of a virtual memory mounted as a file system which helps to speed up applications. It normally being used to transfer data between programs. It appears as a file system but it does not use persistent device such as hard disk. Instead it uses virtual memory (portion of a RAM).

Thats why if you create any file in tmpfs its not created on your system disks but in your memory. Whenever you un-mount tmpfs, everything within is lost. Its volatile storage. Even if you add entry of tmpfs to re-mount at boot, it will be mounted blank. Data does not persist over reboots or shutdowns in tmpfs.


What is SWAP?

swap is portion of your hard disks used to extend RAM. Its roughly extended RAM by use of persistent storage device. swap only comes in action once your RAM (physical memory) is full. Normal thumb rule is size of swap should be double of your physical ram size. But this changes depends on conditions and system you have. Read how to create extra swap here & check swap on server.

Even if uses persistent devices, it still is a volatile memory. It does not hold data over reboot or shutdowns. Since it plays role of RAM, its characteristics are still of ram even if uses hard disks.


Difference between tmpfs and swap

·         tmpfs uses memory while as swap uses persistent storage devices.

·         tmpfs can be viewed as file system in df output whereas swap dont

·         swap has general size recommendations, tmpsfs not. tmpfs size varies on system purpose.

·         tmpfs makes applications fasters on loaded systems. swap helps system breath in memory full situations.

·         swap full indicates system heavily loaded, degraded performance and may crash. tmpfs being full not necessarily means heavy load or prone to crash.

·         tmpfs is enhancement where as swap is must have feature!

Reference:
https://kerneltalks.com/linux/difference-between-tmpfs-and-swap/
  • Mahmoud Kazemi
  • ۰
  • ۰

تفاوت softو hard در فایل limits.conf برای لینوکس:

شما در آدرس /etc/security می‌توانید فایلی با نام limits.conf پیدا کنید که در آن می‌توانید یکسری محدودیت برای کاربرها ایجاد کنید که شامل تعداد پروسس‌ها و فایل‌های باز و ... می‌شود. شما می‌توانید برای هر کاربر به طور جداگانه این محدودیت‌ها را اعمال کنید. دو گزینه soft و hard در این اعمال محدودیت‌ها وجود دارد.

Hard  ماکزیمم میزان مجاز به استفاده برای کاربر را نشان می‌دهد که توسط کاربر superuser/root ست می‌شود.

Soft مقدار موثر در لحظه برای کاربر را نشان می‌دهد. کاربر می‌تواند در شرایطی که به منابع بیشتری نیاز دارد این مقدار را تا سقف Hard بالا ببرد.


  • Mahmoud Kazemi
  • ۰
  • ۰

Weblogic Patch

با سلام

برای انجام Patch روی سرور Weblogic خود، می‌بایست کارهای اولیه‌ی امنیتی که شامل Backup گرفتن از سرور و آمادگی‌ برای Rollback و کارهایی از این قبیل است را داشته باشید و ریسک‌های موجود را کاملا بررسی بفرمائید.

برای patch کردن weblogic باید ابتدا زیپ فایل patch  را از سایت اوراکل دانلود کرده در داخل سرور موردنظر قرار دهیم به طور مثال در /opt/weblogic patch .

سرویس وبلاجیک خود را کاملا پایین آورده و سپس فایل را unzip می‌کنیم و به داخل دایرکتوری patch وارد می‌شویم. قبل از نصب patch می‌توانید با استفاده از -report قابل اجرا بودن patch خود، روی Oracle Home مورد نظر را بررسی بفرمائید.

اگر از این option استفاده نفرمائید سرور شروع به عملیات نصب patch می‌کند (البته پس از گرفتن اعلام آمادگی شما توسط وارد کردن Y)

به عنوان مثال می‌خواهیم patch شماره 22505331 را روی نسخه 12.1.2.0.0 نصب کنیم.

cd /opt/weblogic\ patch/

unzip p22505331_121200_Generic.zip

/opt/Oracle_Home/OPatch/opatch lsinventory

cd 22505331/

/opt/Oracle_Home/OPatch/opatch apply -report

/opt/Oracle_Home/OPatch/opatch apply

اگر بخواهید چند patch  را همزمان نصب بفرمائید باید از دستور

opatch napply patch1,patch2,...,patchn

استفاده بفرمائید.

برای rollback باید از opatch rollback و برای rollback دسته‌ای از patchها باید از opatch nrollback استفاده بفرمائید.

در صورتی که مرحله نصب با مشکل مواجه شد می‌توانید از napply استفاده کنید. به این صورت که پس از Unzip کردن فایل در current directory از دستور زیر استفاده کنید:

/opt/Oracle_Home/OPatch/opatch napply /opt/weblogic\ patch/22505331 


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

opt/Oracle_Home/OPatch/opatch lsinventory/


لیست باگ‌های فیکس شده را ببینید.

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


  • Mahmoud Kazemi
  • ۰
  • ۰

با سلام و احترام


برای افزودن زمان اجرا شدن دستورات در لاگ فایل‌ها می‌توانیم از متغیر 

HISTTIMEFORMAT

استفاده کنیم، به این صورت که 

#echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile ; source ~/.bash_profile

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


اگر بخواهید این امر برای تمام کاربرهای موجود اجرا شود میتوانید 

export HISTTIMEFORMAT="%d/%m/%y %T "

را در انتهای فایل 

/etc/bashrc

اضافه کنید.

  • Mahmoud Kazemi