Hostwinds Tutoriels
Résultats de recherche pour:
Table des matières
Mots clés: Cloud Servers, Dedicated Server
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.
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é.
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.
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.
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