Hostwinds Tutoriels

Résultats de recherche pour:


Table des matières


Qu'est-ce que PowerShell?
Pourquoi Linux PowerShell?
Installation de Linux PowerShell
Exemples supplémentaires de Linux PowerShell
Conclusion

Utilisation de PowerShell avec Linux

Mots clés: Cloud Servers,  Dedicated Server 

Qu'est-ce que PowerShell?
Pourquoi Linux PowerShell?
Installation de Linux PowerShell
Exemples supplémentaires de Linux PowerShell
Conclusion

Qu'est-ce que PowerShell?

PowerShell est une solution multiplateforme couramment utilisée pour automatiser la gestion des systèmes informatiques, mais il peut également être utilisé pour le codage général.PowerShell est composé d'un shell de ligne de commande, d'une langue de script et d'un cadre de gestion de la configuration.PowerShell fonctionne sur Windows, Linux et les systèmes d'exploitation MacOS.En raison des différences fondamentales dans les systèmes d'exploitation, certaines commandes PowerShell (appelées applets de commande) n'ont pas de sens.Par exemple, le PowerShell Get-acl Cmdlet ne s'applique pas aux systèmes Linux en ce que le système de fichiers Linux n'utilise pas de listes de contrôle d'accès NTFS (ACL).Pour afficher une liste des applications Linux PowerShell disponibles, exécutez Se mettre en commun.

Pourquoi Linux PowerShell?

Dans Linux, la sortie d'une commande peut être tuée dans une autre commande.Par example:

ls | sort -r | more

Cette inverse trie le contenu du répertoire actuel et pagine la liste (si nécessaire).C'est-à-dire la sortie du flux de données du ls la commande est tuyaux à la sorte commande dont la sortie du flux de données est ensuite tué vers le plus commande.L'analogue PowerShell de ceci est le suivant:

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

Ce qui soulève la question, pourquoi voudriez-vous utiliser PowerShell sur la version native?L'une des principales raisons est que les objets, et non les flux de données simples, sont canalisés entre les applets de commande PowerShell.Par exemple, il n'est pas nécessaire d'analyser le texte pour extraire les informations d'un autre flux de sortie.Et parce que les objets PowerShell ont généralement une pléthore de propriétés qui leur sont associées, vous pouvez faire des choses assez puissantes relativement facilement.Par exemple, disons que vous aimeriez trouver le PID du service cron.Une première tentative pourrait être la suivante:

ps -aux | grep cron

Il en résulte une sortie similaire à ce qui suit:

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

Le Cron Pid semble être 1041 bien qu'il soit difficile de le dire sans voir les en-têtes de table.En supposant que ce soit le cas, nous devons accéder à la deuxième colonne de la première ligne.La première étape pourrait être de réduire les espaces excessifs:

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

Cela donne:

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

Maintenant, nous pouvons isoler la deuxième colonne avec couper:

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

Qui produit:

1041
3519
4274

Enfin, nous pouvons saisir la première ligne, comme suit, pour obtenir le résultat souhaité, à savoir 1041:

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

En utilisant le fait que PowerShell Cmdlets Output des objets plutôt que des flux de données, la version PowerShell de ce qui précède est simplement:

(Get-Process -Name crond).Id

Dans ce cas, Processeur -name Cond Renvoie un objet représentant le processus CRON.Cet objet a une série de propriétés utiles, dont l'une est l'ID de processus (ou PID).Pour accéder à une propriété d'un objet PowerShell, vous pouvez l'envelopper entre parenthèses, puis utiliser la notation "point" standard, comme indiqué.

Installation de Linux PowerShell

Pour installer PowerShell sur votre saveur préférée de Linux, reportez-vous à Microsoft Installation de PowerShell sur Linux.Si votre distribution Linux n'est pas répertoriée, envisagez D'autres façons d'installer PowerShell sur Linux.

À titre d'exemple, les quatre commandes suivantes installent la dernière version de PowerShell sur Ubuntu:

# Optionally update all software packages:
  sudo apt update && sudo apt upgrade -y
  
# Download and Add Microsoft repository:
  wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb" -O packages-microsoft-prod.deb

  sudo dpkg -i packages-microsoft-prod.deb


    
# Install PowerShell:
  sudo apt update

  sudo apt install -y powershell


    
# Start PowerShell:
  pwsh

Comme on peut le voir, l'installation de PowerShell est simple.

Exemples supplémentaires de Linux PowerShell

Une technique clé consiste à déterminer les propriétés qu'un objet PowerShell a réellement.Cela peut facilement être accompli avec le Être membre cmdlet.Par exemple, pour déterminer les propriétés d'un objet PowerShell Process, vous pouvez utiliser:

Get-Process | Get-Member -Force

Cela révèle qu'il y a un Chemin propriété pour les objets de processus.Ainsi, nous pouvons l'utiliser pour répertorier les 10 meilleurs processus, en ce qui concerne l'utilisation du processeur, comme suit:

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

Cela produit une sortie similaire à ce qui suit:

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

Bien qu'utile, nous voulons peut-être calculer une métrique d'utilisation globale du système.Une première coupe peut être de simplement résumer la mémoire non paginée (NPM), la mémoire de page (PM), le jeu de travail (WS) et les valeurs d'utilisation du processeur.Autrement dit, nous définissons notre métrique d'utilisation globale comme suit:

Global usage = npm + pm + ws + proce.

Dans PowerShell, cela peut être accompli comme suit:

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

le @{} La table de hachage (c'est-à-dire les paires de clés / valeur) nous permet de définir une propriété appelée Réalisation globale dont la définition est l'expression montrée ci-dessus.Dans cette expression, $_ représente un objet de pipeline.Dans ce cas, un processus individuel obose Faire un processus Renvoie (un par processus Linux en cours d'exécution).Nous additionnons ensuite les quatre propriétés.Il en résulte ce qui suit (premières lignes):

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

Maintenant, nous pouvons combiner ces deux concepts comme suit:

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

Cela produit une table d'utilisation globale du Top 10, similaire à ce qui suit:

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

Et si vous préférez afficher les valeurs d'utilisation arrondies, vous pouvez utiliser:

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

le [Math] :: round () La fonction est utilisée pour contourner les sommes individuelles à leurs valeurs entières les plus proches.

Conclusion

Il existe de nombreux scénarios où les commandes Linux standard ont plus de sens que les applets de télévision PowerShell, et dans un certain nombre de cas, l'inverse, mais ce qui est particulièrement attrayant, c'est que vous pouvez utiliser les deux paradigmes ensemble.À titre d'exemple simple, considérons:

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

Cela produit:

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

La troisième colonne indique si le processus est réactif ou non.

Comme vous pouvez le voir, PowerShell et la combinaison de PowerShell avec les commandes Linux offrent de nombreuses opportunités pour résoudre et simplifier divers problèmes et tâches.

Écrit par Karlito Bonnevie  /  avril 26, 2022