Hostwinds دروس
نتائج البحث عن:
جدول المحتويات
العلامات: Cloud Servers, Dedicated Server
PowerShell هو حل عبر المنصات المستخدم عادة لأتمتة إدارة أنظمة الكمبيوتر ولكن يمكن استخدامه للترميز العام أيضًا.يتكون PowerShell من قذيفة سطر الأوامر ولغة البرمجة النصية وإطار إدارة التكوين.يعمل PowerShell على أنظمة تشغيل Windows و Linux و MacOS.بسبب الاختلافات الأساسية في أنظمة التشغيل ، فإن بعض أوامر PowerShell (تسمى CMDlets) لا معنى لها.على سبيل المثال ، PowerShell Get-ACL لا ينطبق CMDLET على أنظمة Linux حيث لا يستخدم نظام ملفات Linux قوائم التحكم في الوصول إلى NTFS (ACLs).لعرض قائمة من Linux PowerShell Cmdlets ، قم بتشغيل احصل على مفيد.
في 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 ، يمكنك لفه بين قوسين ثم استخدام تدوين "نقطة" قياسي ، كما هو موضح.
لتثبيت 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 واضح ومباشر.
تتمثل إحدى الأساليب الرئيسية في تحديد خصائص كائن 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