Hostwinds Tutorials

Suchergebnisse für:


Inhaltsverzeichnis


Was ist Powershell?
Warum Linux PowerShell?
Installation von Linux PowerShell
Zusätzliche Linux PowerShell -Beispiele
Fazit

Verwenden von PowerShell mit Linux

Stichworte: Cloud Servers,  Dedicated Server 

Was ist Powershell?
Warum Linux PowerShell?
Installation von Linux PowerShell
Zusätzliche Linux PowerShell -Beispiele
Fazit

Was ist Powershell?

PowerShell ist eine plattformübergreifende Lösung, die üblicherweise zur Automatisierung der Verwaltung von Computersystemen verwendet wird, kann jedoch auch für die allgemeine Codierung verwendet werden.PowerShell besteht aus einer Befehlszeilenschale, einer Skriptsprache und einem Konfigurationsmanagement-Framework.PowerShell läuft unter Windows, Linux und den MacOS -Betriebssystemen.Aufgrund grundlegender Unterschiede in den Betriebssystemen machen einige PowerShell -Befehle (CMDLets) keinen Sinn.Zum Beispiel die PowerShell Get-Acl CMDLet ist für Linux -Systeme nicht anwendbar, da das Linux -Dateisystem keine NTFS -Zugriffskontrolllisten (ACLS) verwendet.Um eine Liste der verfügbaren Linux PowerShell -CMDlets anzuzeigen Get-Command.

Warum Linux PowerShell?

Unter Linux kann die Ausgabe eines Befehls in einen anderen Befehl geleitet werden.Zum Beispiel:

ls | sort -r | more

Dieses umgekehrte sortiert den Inhalt des aktuellen Verzeichnisses und paginiert die Liste (falls erforderlich).Das heißt, der Datenstromausgang der Datenstromausgabe der ls Befehl wird an die gelobt Sortieren Befehl, dessen Datenstromausgabe dann an die gelobt wird Mehr Befehl.Das PowerShell -Analogon ist wie folgt:

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

Was wirft die Frage auf, warum Sie PowerShell über die native Version verwenden möchten?Ein Hauptgrund ist, dass Objekte und nicht einfache Datenströme zwischen PowerShell -CMDlets gelobt werden.Beispielsweise müssen nicht Text analysiert werden, um Informationen aus einem anderen Ausgabestrom zu extrahieren.Und weil PowerShell -Objekte im Allgemeinen eine Vielzahl von Eigenschaften haben, die mit ihnen verbunden sind, können Sie relativ leicht einige ziemlich mächtige Dinge tun.Sagen Sie zum Beispiel, Sie möchten den PID des Cron -Dienstes finden.Ein erster Versuch könnte wie folgt sein:

ps -aux | grep cron

Dies führt zu einer Ausgabe ähnlich wie folgt:

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

Die Cron PID scheint 1041 zu sein, obwohl es schwer zu erkennen ist, ohne die Tischüberschriften zu sehen.Angenommen, dies ist der Fall, müssen wir in der ersten Zeile auf die zweite Spalte zugreifen.Der erste Schritt könnte darin bestehen, übermäßige Weißespace zu reduzieren:

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

Dies ergibt:

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

Jetzt können wir die zweite Spalte mit isolieren Schnitt:

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

Was produziert:

1041
3519
4274

Schließlich können wir wie folgt die erste Zeile schnappen, um das gewünschte Ergebnis zu erzielen, nämlich 1041:

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

Mit der Tatsache, dass PowerShell CMDLets eher Objekte als Datenströme ausgeben, ist die PowerShell -Version des oben genannten einfach:

(Get-Process -Name crond).Id

In diesem Fall, Get -Process -name Crond Gibt ein Objekt zurück, das den Cron -Prozess darstellt.Dieses Objekt hat eine Reihe nützlicher Eigenschaften, von denen eine die Prozess -ID (oder PID) ist.Um auf eine Eigenschaft eines PowerShell -Objekts zuzugreifen, können Sie es in Klammern einwickeln und dann wie gezeigt Standard "Punkt" -Notation verwenden.

Installation von Linux PowerShell

Um PowerShell auf Ihrem Lieblingsgeschmack von Linux zu installieren Installieren von PowerShell unter Linux.Wenn Ihre Linux -Verteilung nicht aufgeführt ist Alternative Möglichkeiten zur Installation von PowerShell unter Linux.

Beispielsweise installieren die folgenden vier Befehle die neueste Version von PowerShell zu 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

Wie zu sehen ist, ist die Installation von PowerShell unkompliziert.

Zusätzliche Linux PowerShell -Beispiele

Eine Schlüsseltechnik besteht darin, zu bestimmen, welche Eigenschaften ein PowerShell -Objekt tatsächlich hat.Dies kann leicht mit dem erreicht werden Karten cmdlet.Um beispielsweise die Eigenschaften eines PowerShell -Prozessobjekts zu bestimmen, können Sie verwenden:

Get-Process | Get-Member -Force

Dies zeigt, dass es eine gibt Weg Eigenschaft für Prozessobjekte.Daher können wir es verwenden, um die Top 10 Prozesse in Bezug auf die CPU -Verwendung wie folgt aufzulisten:

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

Dies erzeugt eine ähnliche Ausgabe wie folgt:

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

Obwohl wir nützlich sind, möchten wir vielleicht eine Gesamtsystemnutzungsmetrik berechnen.Ein erster Schnitt könnte darin bestehen, einfach die Werte für nicht ausgestattetes Speicher (NPM), Seitenspeicher (PM), Working Set (WS) und CPU zu summieren.Das heißt, wir definieren unsere Gesamtnutzungsmetrik wie folgt:

Gesamtrang = NPM + PM + WS + CPU.

In PowerShell kann dies wie folgt erreicht werden:

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

Das @{} Die Hash -Tabelle (d. H. Schlüssel-/Wertpaare) ermöglicht es uns, eine Eigenschaft genannt zu definieren Gesamtauslagerung Wessen Definition ist der oben gezeigte Ausdruck.In diesem Ausdruck, $_ repräsentiert ein Pipeline -Objekt.In diesem Fall ein individuelles Prozessobjekt, das Get-Process Rückgabe (einer pro laufender Linux -Prozess).Wir summieren dann die vier Eigenschaften.Dies führt in den folgenden (ersten Zeilen):

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

Jetzt können wir diese beiden Konzepte wie folgt kombinieren:

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

Dies erzeugt eine Top 10 Gesamtnutzungstabelle, ähnlich wie folgt:

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

Und wenn Sie es vorziehen, abgerundete Nutzungswerte anzuzeigen, können Sie verwenden:

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

Das [Math] :: Round () Funktion wird verwendet, um die einzelnen Beträge auf ihre nächsten ganzen Werte zu runden.

Fazit

Es gibt viele Szenarien, in denen Standard -Linux -Befehle sinnvoller sind als PowerShell -CMDLets, und in mehreren Fällen umgekehrt, aber besonders ansprechend ist, dass Sie beide Paradigmen zusammen verwenden können.Betrachten Sie als einfaches Beispiel:

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

Dies produziert:

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

Die dritte Spalte gibt an, ob der Prozess reagiert oder nicht.

Wie Sie sehen können, bieten PowerShell und die Kombination von PowerShell mit Linux -Befehlen ausreichend Möglichkeiten, verschiedene Probleme und Aufgaben zu lösen und zu vereinfachen.

Geschrieben von Karlito Bonnevie  /  April 26, 2022