Hostwinds Учебники

Результаты поиска для:


Содержание


Что такое PowerShell?
Почему Linux PowerShell?
Установка Linux PowerShell
Дополнительные примеры Linux PowerShell
Вывод

Использование PowerShell с Linux

Теги: Cloud Servers,  Dedicated Server 

Что такое PowerShell?
Почему Linux PowerShell?
Установка Linux PowerShell
Дополнительные примеры Linux PowerShell
Вывод

Что такое PowerShell?

PowerShell-это кроссплатформенное решение, обычно используемое для автоматизации управления компьютерными системами, но его можно также использовать для общего кодирования.PowerShell состоит из оболочки командной строки, языка сценариев и структуры управления конфигурацией.PowerShell работает в Windows, Linux и операционных системах MacOS.Из -за фундаментальных различий в операционных системах некоторые команды PowerShell (называемые командлетами) не имеют смысла.Например, PowerShell Get-acl Cmdlet не применим к системам Linux в том смысле, что файловая система Linux не использует списки контроля доступа NTFS (ACLS).Чтобы просмотреть список доступных командлетов Linux PowerShell, запустить Get-Command.

Почему Linux PowerShell?

В 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, вы можете обернуть его в скобки, а затем использовать стандартную «точечную» обозначения, как показано.

Установка Linux 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 проста.

Дополнительные примеры Linux 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