Hostwinds دروس

نتائج البحث عن:


جدول المحتويات


ما هو باورشيل؟
لماذا Linux PowerShell؟
تثبيت Linux PowerShell
أمثلة إضافية Linux PowerShell
خاتمة

باستخدام PowerShell مع Linux

العلامات: Cloud Servers,  Dedicated Server 

ما هو باورشيل؟
لماذا Linux PowerShell؟
تثبيت Linux PowerShell
أمثلة إضافية Linux PowerShell
خاتمة

ما هو باورشيل؟

PowerShell هو حل عبر المنصات المستخدم عادة لأتمتة إدارة أنظمة الكمبيوتر ولكن يمكن استخدامه للترميز العام أيضًا.يتكون PowerShell من قذيفة سطر الأوامر ولغة البرمجة النصية وإطار إدارة التكوين.يعمل PowerShell على أنظمة تشغيل Windows و Linux و MacOS.بسبب الاختلافات الأساسية في أنظمة التشغيل ، فإن بعض أوامر PowerShell (تسمى CMDlets) لا معنى لها.على سبيل المثال ، PowerShell Get-ACL لا ينطبق CMDLET على أنظمة Linux حيث لا يستخدم نظام ملفات Linux قوائم التحكم في الوصول إلى NTFS (ACLs).لعرض قائمة من Linux PowerShell Cmdlets ، قم بتشغيل احصل على مفيد.

لماذا Linux PowerShell؟

في Linux ، يمكن أن يتم إخراج أمر واحد في أمر آخر.علي سبيل المثال:

ls | sort -r | more

هذا العكس يفرز محتويات الدليل الحالي ويؤدي إلى قائمة (إذا لزم الأمر).وهذا هو ، إخراج دفق البيانات من ls يتم تنشيط الأمر إلى نوع الأمر الذي يتم إخراج دفق البيانات الذي يتم إخراجها بعد ذلك إلى أكثر أمر.التناظرية PowerShell في هذا كما يلي:

Get-ChildItem | Sort-Object -Descending | Out-Host -Paging

ما الذي يطرح السؤال ، لماذا تريد استخدام PowerShell على الإصدار الأصلي؟أحد الأسباب الرئيسية هو أن الكائنات ، وليست تدفقات البيانات البسيطة ، يتم أن تنبأ بين PowerShell Cmdlets.على سبيل المثال ، ليست هناك حاجة لتحليل النص لاستخراج المعلومات من دفق إخراج آخر.ولأن كائنات PowerShell لديها عمومًا عدد كبير من الخصائص المرتبطة بها ، يمكنك القيام ببعض الأشياء القوية إلى حد ما بسهولة نسبيًا.على سبيل المثال ، لنفترض أنك ترغب في العثور على PID لخدمة CRON.قد تكون المحاولة الأولى على النحو التالي:

ps -aux | grep cron

ينتج عن هذا الإخراج مما يلي:

root      1041  0.0  0.1 126384  1584 ?        Ss   22:25   0:00 /usr/sbin/crond -n
root      3519  0.0  0.0 123360   728 ?        Ss   23:01   0:00 /usr/sbin/anacron -s
root      4089  0.0  0.0 112808   976 pts/1    R+   23:09   0:00 grep --color=auto cron

يبدو أن PID CRON هو 1041 على الرغم من أنه من الصعب معرفة دون رؤية رؤوس الجدول.على افتراض أن هذا هو الحال ، نحتاج إلى الوصول إلى العمود الثاني في السطر الأول.قد تكون الخطوة الأولى هي تقليل المسافة البيضاء المفرطة:

ps -aux | grep cron | tr -s ' '

هذه العوائد:

root 1041 0.0 0.1 126384 1584 ? Ss 22:25 0:00 /usr/sbin/crond -n
root 3519 0.0 0.0 123360 728 ? Ss 23:01 0:00 /usr/sbin/anacron -s
root 4167 0.0 0.0 112808 972 pts/1 R+ 23:11 0:00 grep --color=auto cron

الآن يمكننا عزل العمود الثاني مع يقطع:

ps -aux | grep cron | tr -s ' ' | cut -d ' ' -f 2

الذي ينتج:

1041
3519
4274

أخيرًا ، يمكننا الحصول على السطر الأول ، على النحو التالي ، للحصول على النتيجة المرجوة ، وهي 1041:

ps -aux | grep cron | tr -s ' ' | cut -d ' ' -f 2 | head -1

باستخدام حقيقة أن PowerShell Cmdlets يخرج كائنات بدلاً من تدفقات البيانات ، فإن إصدار PowerShell من ما سبق هو ببساطة:

(Get-Process -Name crond).Id

في هذه الحالة، Get -Process -name Crond إرجاع كائن يمثل عملية CRON.يحتوي هذا الكائن على سلسلة من الخصائص المفيدة ، أحدها هو معرف العملية (أو PID).للوصول إلى خاصية لكائن PowerShell ، يمكنك لفه بين قوسين ثم استخدام تدوين "نقطة" قياسي ، كما هو موضح.

تثبيت Linux PowerShell

لتثبيت PowerShell على نكهة Linux المفضلة لديك ، راجع Microsoft's تثبيت PowerShell على Linux.إذا لم يتم سرد توزيع Linux الخاص بك ، ففكر طرق بديلة لتثبيت PowerShell على Linux.

على سبيل المثال ، تقوم الأوامر الأربعة التالية بتثبيت أحدث إصدار من PowerShell على Centos 7:

# Optionally update all software packages:
  sudo yum -y update
  
# Register the Microsoft repository:
  curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/microsoft.repo
    
# Install PowerShell:
  sudo yum -y install powershell
    
# Start PowerShell:
  pwsh

كما يتضح ، فإن تثبيت PowerShell واضح ومباشر.

أمثلة إضافية Linux PowerShell

تتمثل إحدى الأساليب الرئيسية في تحديد خصائص كائن PowerShell بالفعل.يمكن بسهولة تحقيق ذلك مع عضو cmdlet.على سبيل المثال ، لتحديد خصائص كائن عملية PowerShell ، يمكنك استخدام:

Get-Process | Get-Member -Force

هذا يكشف أن هناك طريق خاصية للكائنات العملية.وبالتالي ، يمكننا استخدامه لسرد أفضل 10 عمليات ، فيما يتعلق باستخدام وحدة المعالجة المركزية ، على النحو التالي:

Get-Process | Sort-Object -Property CPU | Select-Object -Property Name, Path, CPU -Last 10

هذا ينتج إخراج مما يلي:

Name           Path                                CPU
----           ----                                ---
xfwm4          /usr/bin/xfwm4                     1.95
systemd        /usr/lib/systemd/systemd           3.63
rngd           /usr/sbin/rngd                     7.39
xfce4-terminal /usr/bin/xfce4-terminal            9.35
xrdp           /usr/sbin/xrdp                    22.05
ksoftirqd/0                                      26.21
pwsh           /opt/microsoft/powershell/7/pwsh  27.37
rcu_sched                                        45.44
Xvnc           /usr/bin/Xvnc                     59.27
NetworkManager /usr/sbin/NetworkManager         955.19

على الرغم من أنها مفيدة ، فقد نرغب في حساب مقياس استخدام النظام العام.قد يكون القطع الأول هو مجرد جمع الذاكرة غير المقيدة (NPM) ، وذاكرة الصفحة (PM) ، ومجموعة العمل (WS) ، وقيم استخدام وحدة المعالجة المركزية.وهذا هو ، نحن نحدد مقياس الاستخدام العام لدينا على النحو التالي:

بشكل عام = NPM + PM + WS + CPU.

في PowerShell ، يمكن تحقيق ذلك على النحو التالي:

Get-Process | Select-Object -Property @{Label = 'OverallUsage'; Expression = {$_.NPM + $_.PM + $_.WS + $_.CPU}}

ال @{} يتيح لنا جدول التجزئة (أي أزواج المفاتيح/القيمة) تحديد خاصية تسمى بشكل عام تعريفه هو التعبير الموضح أعلاه.في هذا التعبير ، $_ يمثل كائن خط أنابيب.في هذه الحالة ، كائن معالجة فردي الحصول على عملية إرجاع (واحد لكل عملية تشغيل Linux).ثم نلخص العقارات الأربعة.ينتج عن هذا ما يلي (الأسطر القليلة الأولى):

    OverallUsage
    ------------
          520192
       815104.03
          794624
         1093632
      4902912.01
      3330048.37

الآن يمكننا الجمع بين هذين المفهومين على النحو التالي:

Get-Process | Select-Object -Property Name, Path, @{Label = 'OverallUsage'; Expression = {$_.NPM + $_.PM + $_.WS + $_.CPU}} | Sort-Object -Property OverallUsage -Bottom 10

ينتج عن ذلك جدول الاستخدام العشرة الأعلى ، على غرار ما يلي:

Name                Path                             OverallUsage
----                ----                             ------------
Thunar              /usr/bin/thunar                    14073856.2
xfce4-power-manager /usr/bin/xfce4-power-manager       15970304.3
xfce4-panel         /usr/bin/xfce4-panel               16195584.9
xfdesktop           /usr/bin/xfdesktop                17588224.59
tuned               /usr/bin/python2.7                18898945.66
yum-cron            /usr/bin/python2.7                 22335488.2
xfce4-terminal      /usr/bin/xfce4-terminal            23642123.4
xrdp                /usr/sbin/xrdp                    26570776.34
Xvnc                /usr/bin/Xvnc                     82710598.14
pwsh                /opt/microsoft/powershell/7/pwsh 298852382.66

وإذا كنت تفضل عرض قيم الاستخدام المدورة ، فيمكنك استخدام:

Get-Process | Select-Object -Property Name, Path, @{Label = 'OverallUsage'; Expression = {[Math]::Round($_.NPM + $_.PM + $_.WS + $_.CPU)}} | Sort-Object -Property OverallUsage -Bottom 10

ال [الرياضيات] :: جولة () يتم استخدام الوظيفة لتجول المبالغ الفردية إلى أقرب قيمها بأكملها.

خاتمة

هناك الكثير من السيناريوهات التي تكون فيها أوامر Linux القياسية أكثر منطقية من PowerShell Cmdlets ، وفي عدد من الحالات ، والعكس ، ولكن ما هو جذاب بشكل خاص هو أنه يمكنك استخدام كلا النموذجين معًا.كمثال بسيط ، ضع في اعتبارك:

Get-Process | Select-Object -Property Name, Path, Responding, Id |  grep cron

هذا ينتج:

anacron    /usr/sbin/anacron    True   3018
crond      /usr/sbin/crond      True   1033
yum-cron   /usr/bin/python2.7   True   4760

يشير العمود الثالث إلى ما إذا كانت العملية مستجيبة أم لا.

كما ترون ، يوفر PowerShell ومجموعة PowerShell مع أوامر Linux فرصة كبيرة لحل وتبسيط مختلف المشكلات والمهام.

كتب بواسطة Karlito Bonnevie  /  أبريل 26, 2022