Hostwinds Учебники
Результаты поиска для:
Содержание
Теги: Cloud Servers, Dedicated Server
PowerShell-это кроссплатформенное решение, обычно используемое для автоматизации управления компьютерными системами, но его можно также использовать для общего кодирования.PowerShell состоит из оболочки командной строки, языка сценариев и структуры управления конфигурацией.PowerShell работает в Windows, Linux и операционных системах MacOS.Из -за фундаментальных различий в операционных системах некоторые команды PowerShell (называемые командлетами) не имеют смысла.Например, PowerShell Get-acl Cmdlet не применим к системам Linux в том смысле, что файловая система Linux не использует списки контроля доступа NTFS (ACLS).Чтобы просмотреть список доступных командлетов Linux PowerShell, запустить Get-Command.
В Linux вывод одной команды может быть переведен в другую команду.Например:
ls | sort -r | moreЭтот реверс сортирует содержимое текущего каталога и ставит плюс с списком (при необходимости).То есть вывод потока данных ls команда передается на Сортировать Команда, выход потока данных затем передается на Больше командованиеАналог PowerShell этого заключается в следующем:
Get-ChildItem | Sort-Object -Descending | Out-Host -PagingВозникает вопрос, зачем вам использовать PowerShell над нативной версией?Одна из ключевых причин заключается в том, что объекты, а не простые потоки данных, проводятся между командлетами PowerShell.Например, нет необходимости проанализировать текст, чтобы извлечь информацию из другого выходного потока.И поскольку объекты PowerShell, как правило, обладают множеством свойств, связанных с ними, вы можете сделать некоторые довольно мощные вещи относительно легко.Например, скажем, вы хотели бы найти пид -пид Cron Service.Первая попытка может быть следующей:
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 cronPID 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 на 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Как видно, установка PowerShell проста.
Одним из ключевых методов является определение того, какие свойства на самом деле обладает объектом PowerShell.Это может быть легко достигнуто с помощью Получить Комдлет.Например, чтобы определить свойства объекта процесса 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) и значений использования ЦП.То есть мы определяем наш общий показатель использования следующим образом:
Oversusage = npm + pm + ws + cpu.
В PowerShell это может быть достигнуто следующим образом:
Get-Process | Select-Object -Property @{Label = 'OverallUsage'; Expression = {$_.NPM + $_.PM + $_.WS + $_.CPU}}В @{} Хэш -таблица (то есть пары ключей/значения) позволяет нам определить свойство, вызванное Oversusage чье определение - выражение, показанное выше.В этом выражении, $_ представляет объект трубопровода.В этом случае отдельный процесс объект, который Получить процесс Возврат (один на процесс запуска 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Это создает топ -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В [Math] :: Round () Функция используется для округления отдельных сумм до их ближайших целых значений.
Существует множество сценариев, в которых стандартные команды Linux имеют больше смысла, чем командлеты PowerShell, и в ряде случаев, наоборот, но особенно привлекательно, так это то, что вы можете использовать обе парадигмы вместе.В качестве простого примера рассмотрим:
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