Hostwinds Блог

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


Сила Пауэрселла Популярное изображение

Сила Пауэрселла

от: Karlito Bonnevie  /  апреля 29, 2022


При сравнении команд традиционного интерфейса командной строки Windows (CLI) с командами Linux CLI, на самом деле нет сравнения.В традиционном CLI Windows нет ничего (CD, DIR, Copy, Del и т. Д.), Такое мощное, как AWK, SED, голова, хвост, TSORT, Uniq, Split и т. Д.CLI заключается в том, что обработка потока текста часто требуется для получения желаемого результата.Например, скажем, вам нужен адрес IPv6 вашей машины Linux.Один подход может быть:

ifconfig | grep inet6 | head -1 | awk '{print $2}'

Команда GREP захватывает несколько строк, содержащих «inet6», команда Head захватывает первое из них, а AWK печатает второе поле (то есть вторую строку) в строке, создавая желаемое значение IPv6.Довольно гладко, но мы обрабатываем текстовые потоки, что может быстро стать довольно сложным.Например, скажем, вы хотите сделать следующее:

  • Перечислить все системные процессы, тогда
  • Сортируйте список в порядке убывания по счету ручек, а затем время использования процессора, затем
  • Просмотреть список как таблица с указанием имени процесса, подсчета обработки, времени процессора и полного пути файла процесса?

PowerShell для этого довольно просто:

Get-Process | Sort-Object -Property HandleCount, CPU | Format-Table -Property Name, HandleCount, CPU, Path

А вот фрагмент вывода.Как видно, таблица сортируется по счету ручек, затем по времени ЦП (обратите внимание на время нисходящего процессора для трех процессов с использованием 18 ручек):

Name                    HandleCount        CPU Path
----                    -----------        --- ----
chrome                          165     375.13 /opt/google/chrome/chrome
pwsh                            128       81.1 /opt/microsoft/powershell/7/pwsh
chrome                           52     216.36 /opt/google/chrome/chrome
chrome                           44     151.13 /opt/google/chrome/chrome
Xvnc                             33     254.66 /usr/bin/Xvnc
dbus-daemon                      31       0.23 /usr/bin/dbus-daemon
chrome                           23       0.45 /opt/google/chrome/chrome
xfce4-terminal                   18      16.39 /usr/bin/xfce4-terminal
xfce4-session                    18       0.12 /usr/bin/xfce4-session
xrdp-chansrv                     18       0.05 /usr/sbin/xrdp-chansrv
xfdesktop                        15       4.39 /usr/bin/xfdesktop
xfce4-power-manager              15       0.39 /usr/bin/xfce4-power-manager
chrome                           15       0.03 /opt/google/chrome/chrome

Теперь скажите, что в дополнение к вышесказанному вы хотели бы группировать по счету?Это не может быть намного проще, просто добавьте аргумент -groupby Handlecount в командлет формата -стола (да, это то, что они называют):

Get-Process | Sort-Object -Property HandleCount, CPU | Format-Table -Property Name, HandleCount, CPU, Path -GroupBy HandleCount

Вот фрагмент этого вывода:

   HandleCount: 18

Name           HandleCount   CPU Path
----           -----------   --- ----
xfce4-terminal          18 16.68 /usr/bin/xfce4-terminal
xfce4-session           18  0.12 /usr/bin/xfce4-session
xrdp-chansrv            18  0.05 /usr/sbin/xrdp-chansrv

   HandleCount: 15

Name                HandleCount  CPU Path
----                -----------  --- ----
xfdesktop                    15 4.43 /usr/bin/xfdesktop
xfce4-power-manager          15  0.4 /usr/bin/xfce4-power-manager
chrome                       15 0.03 /opt/google/chrome/chrome

Обратите внимание, что нет намека на обработку потока текста ни в одном из этих примеров PowerShell.Это потому, что PowerShell передает объекты (с различными свойствами) между командниками, а не потоками данных.Если вы действительно хотите, вы все равно можете манипулировать потоками текста с помощью командлета Select String, но это редко бывает.Кстати, в последнем примере вы можете группировать любые свойства объекта Get-Process, и вы можете использовать Get-Process |Получите быстро увидеть, какие свойства доступны.

Звуко интригующе?Хотите знать, как начать?Тогда посмотрите Использование PowerShell с Linux.

Написано Karlito Bonnevie  /  апреля 29, 2022