Hostwinds Tutorial

Cerca risultati per:


Sommario


Cos'è PowerShell?
Perché Linux PowerShell?
Installazione di Linux PowerShell
Esempi aggiuntivi di Linux PowerShell
Conclusione

Usando PowerShell con Linux

Tag: Cloud Servers 

Cos'è PowerShell?
Perché Linux PowerShell?
Installazione di Linux PowerShell
Esempi aggiuntivi di Linux PowerShell
Conclusione

Cos'è PowerShell?

PowerShell è una soluzione multipiattaforma comunemente utilizzata per automatizzare la gestione dei sistemi informatici, ma può essere utilizzata anche per la codifica generale.PowerShell è composto da una shell della riga di comando, un linguaggio di scripting e un framework di gestione della configurazione.PowerShell funziona su Windows, Linux e sui sistemi operativi MACOS.A causa delle differenze fondamentali nei sistemi operativi, alcuni comandi PowerShell (chiamati CMDLET) non hanno senso.Ad esempio, il PowerShell Get-acl CMDLET non è applicabile per i sistemi Linux in quanto il file system Linux non utilizza elenchi di controllo degli accessi NTFS (ACLS).Per visualizzare un elenco dei cmdlet disponibili Linux PowerShell, esegui Get-comand.

Perché Linux PowerShell?

In Linux, l'output di un comando può essere tubata in un altro comando.Per esempio:

ls | sort -r | more

Questo inverso ordina il contenuto della directory corrente e pagina l'elenco (se necessario).Cioè, l'output del flusso di dati del ls Il comando è convogliato al file ordinare comando il cui output del flusso di dati viene quindi condotto al Di Più comando.L'analogo di PowerShell di questo è il seguente:

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

Il che pone la domanda, perché dovresti usare PowerShell sulla versione nativa?Uno dei motivi chiave è che gli oggetti, e non semplici flussi di dati, vengono convocati tra PowerShell Cmdlets.Ad esempio, non è necessario analizzare il testo per estrarre informazioni da un altro flusso di output.E poiché gli oggetti PowerShell hanno generalmente una pletora di proprietà ad essi associate, puoi fare alcune cose abbastanza potenti relativamente facilmente.Ad esempio, supponiamo che tu vorresti trovare il PID del servizio Cron.Un primo tentativo potrebbe essere il seguente:

ps -aux | grep cron

Ciò si traduce in output simile a quanto segue:

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

Il PID Cron sembra essere 1041 anche se è difficile da dire senza vedere le intestazioni del tavolo.Supponendo che questo sia il caso, dobbiamo accedere alla seconda colonna nella prima riga.Il primo passo potrebbe essere quello di ridurre lo spazio bianco eccessivo:

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

Questo produce:

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

Ora possiamo isolare la seconda colonna con taglio:

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

Che produce:

1041
3519
4274

Infine, possiamo prendere la prima riga, come segue, per ottenere il risultato desiderato, vale a dire 1041:

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

Usando il fatto che PowerShell CMDLETs output di oggetti anziché flussi di dati, la versione PowerShell di quanto sopra è semplicemente:

(Get-Process -Name crond).Id

In questo caso, Get -process -Name Crond Restituisce un oggetto che rappresenta il processo CRON.Questo oggetto ha una serie di proprietà utili, una delle quali è l'ID di processo (o PID).Per accedere a una proprietà di un oggetto PowerShell, è possibile avvolgerlo tra parentesi e quindi utilizzare la notazione "punto" standard, come mostrato.

Installazione di Linux PowerShell

Per installare PowerShell sul tuo sapore preferito di Linux, fai riferimento a Microsoft's Installazione di PowerShell su Linux.Se la distribuzione Linux non è elencata, considera Modi alternativi per installare PowerShell su Linux.

Ad esempio, i seguenti quattro comandi installano l'ultima versione di PowerShell su 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

Come si può vedere, l'installazione di PowerShell è semplice.

Esempi aggiuntivi di Linux PowerShell

Una tecnica chiave è determinare quali proprietà ha effettivamente un oggetto PowerShell.Questo può essere facilmente realizzato con il Get-Member cmdlet.Ad esempio, per determinare le proprietà di un oggetto di processo PowerShell, è possibile utilizzare:

Get-Process | Get-Member -Force

Questo rivela che esiste un Il percorso Proprietà per oggetti di processo.Pertanto, possiamo usarlo per elencare i primi 10 processi, rispetto all'utilizzo della CPU, come segue:

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

Questo produce output in modo simile a quanto segue:

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

Sebbene utili, potremmo voler calcolare una metrica di utilizzo complessiva del sistema.Un primo taglio potrebbe essere semplicemente di sommare la memoria non pagata (NPM), la memoria di pagina (PM), il set di lavoro (WS) e i valori di utilizzo della CPU.Cioè, definiamo la nostra metrica di utilizzo complessiva come segue:

GENERALEUSAGE = NPM + PM + WS + CPU.

In PowerShell, questo può essere realizzato come segue:

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

Il @{} La tabella hash (cioè coppie chiave/valore) ci consente di definire una proprietà chiamata Complessivamente la cui definizione è l'espressione mostrata sopra.In questa espressione, $_ rappresenta un oggetto della pipeline.In questo caso, un singolo processo oggetto che Get-process restituisce (uno per processo Linux in esecuzione).Quindi sommiamo le quattro proprietà.Ciò si traduce nelle seguenti (prime righe):

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

Ora possiamo combinare questi due concetti come segue:

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

Questo produce una tabella di utilizzo complessiva dei primi 10, simile a quanto segue:

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

E se preferisci visualizzare valori di utilizzo arrotondati, puoi usare:

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

Il [Matematica] :: round () La funzione viene utilizzata per arrotondare le singole somme ai valori interi più vicini.

Conclusione

Esistono molti scenari in cui i comandi Linux standard hanno più senso dei cmdlet PowerShell e, in diversi casi, viceversa, ma ciò che è particolarmente attraente è che puoi usare entrambi i paradigmi insieme.Come semplice esempio, considera:

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

Questo produce:

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

La terza colonna indica se il processo è o meno reattivo.

Come puoi vedere, PowerShell e la combinazione di PowerShell con comandi Linux offrono ampie opportunità per risolvere e semplificare vari problemi e compiti.

Scritto da Karlito Bonnevie  /  aprile 26, 2022