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 cron
PID 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 на 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
Как видно, установка 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