суббота, 5 марта 2011 г.
среда, 2 марта 2011 г.
Настройка vsftpd
Файл конфигурации vsftpd в различных системах по умолчанию располагается в различных местах:
в FreeBSD — /usr/local/etc/vsftpd.conf
в Fedora — /etc/vsftpd/vsftpd.conf
в Debian — /etc/vsftpd.conf
После внесения изменений в конфигурационный файл вашего vsftpd не забывайте перезапускать его. В FreeBSD:
# /usr/local/etc/rc.d/vsftpd restart
В Debian/Fedora:
# service vsftpd restart
Управление доступом
Обратите внимание на то, что в процессе установки vsftp в вашу систему добавляется пользователь с именем учётной записи ftp. Предназначение этой учётной записи — организация доступа к каталогу анонимного FTP. По умолчанию vsftpd разрешает доступ на чтение анонимным пользователям к домашнему каталогу учётной записи ftp. Не забудьте отключить его, если это вам не нужно, изменив значение соответствующего параметра:
anonymous_enable=NO
Если же доступ анонимных пользователей к вашему FTP-серверу разрешён, дополнительно вы можете отключить запрос пароля при анонимном логине:
no_anon_password=YES
Доступ локальных пользователей системы по умолчанию обычно отключён. Включить его при необходимости можно следующим образом:
local_enable=YES
Чтобы ваши локальные пользователи не «бродили» выше их домашних каталогов, можно включить следующее ограничение:
chroot_local_user=YES
Также можно использовать другой способ chroot пользователей, при котором ограничиваться будут не все пользователи, а лишь явно определённые. Для этого необходимо установить значение параметра chroot_local_user равным NO, создать файл с перечнем пользователей для которых chroot должен действовать (например, в /etc/vsftpd.chroot_list) и определить следующие два параметра:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Обратите внимание на то, что если при определённых выше двух параметрах значение параметра chroot_local_user является равным NO, то учётные записи, перечисленные в файле chroot_list_file НЕ будут попадать под ограничения chroot.
Если вы хотите ограничить количество одновременных соединений к vsftpd, есть два способа сделать это: при помощи возможностей суперсервера xinetd или, если ваш демон работает в автономном режиме, при помощи параметра (естественно 10 заменив на нужное вам количество допустимых одновременных подключений):
max_clients=10
По умолчанию в конфигурации vsftpd запрещены FTP-команды создания новых файлов и каталогов, таким образом ваши локальные пользователи по умолчанию не смогут получить доступ на запись в своих домашних каталогах. Исправить это легко можно при помощи определения параметра write_enable:
write_enable=YES
После того, как в конфигурации вашего сервера параметр write_enable установлен равным YES и anonymous_enable определён как YES вы можете управлять доступом относительно операций создания новых файлов/каталогов анонимными пользователями. Разрешить создавать новые каталоги анонимам:
anon_mkdir_write_enable=YES
Разрешить анонимным пользователям удалять и переименовывать файлы и каталоги:
anon_other_write_enable=YES
Разрешить анонимам загружать новые файлы:
anon_upload_enable=YES
Ограничить скорость обмена данными для анонимных пользователей в автономном режиме сервера можно следующим параметром (значение указывается в байтах/сек):
anon_max_rate=1024
По умолчанию umask файлов vsftpd использует равный 077, то есть файлы создаются доступными на чтение/запись только для владельца. Изменить значение umask анонимных пользователей можно при помощи параметра anon_umask:
anon_umask=022
а для локальных — при помощи параметра local_umask:
local_umask=022
При необходимости вы можете запретить пользователям скачивать файлы с вашего сервера:
download_enable=NO
Иногда бывает полезно скрыть реальные идентификаторы владельцев файлов, заменив их на идентификатор пользователя ftp:
hide_ids=YES
Сетевые параметры
Если ваш vsftpd запускается в автономном режиме, а не через xinetd, тогда необходимо явно указать это:
listen=YES
то же, для IPv6 (помните, что демон может работать одновременно только либо с IPv4, либо с IPv6):
listen_ipv6=YES
Определить IPv4 адрес, на который должен «вешаться» демон, можно параметром:
listen_address=192.168.0.1
Для IPv6:
listen_address6=fe80:0:0:0:202:b3ff:fe1e:8329
При необходимости вы можете отключить возможность использования клиентами PASV-режима:
pasv_enable=NO
Разное
Начиная с версии 2.0.7 vsftpd умеет удалять неудавшиеся закачки, если определить следующий параметр:
delete_failed_uploads=YES
По умолчанию vsftpd отображает таймштампы файлов в GMT. Если вам нужно, чтобы они отображались согласно локальному времени сервера, воспользуйтесь следующим параметром:
use_localtime=YES
в FreeBSD — /usr/local/etc/vsftpd.conf
в Fedora — /etc/vsftpd/vsftpd.conf
в Debian — /etc/vsftpd.conf
После внесения изменений в конфигурационный файл вашего vsftpd не забывайте перезапускать его. В FreeBSD:
# /usr/local/etc/rc.d/vsftpd restart
В Debian/Fedora:
# service vsftpd restart
Управление доступом
Обратите внимание на то, что в процессе установки vsftp в вашу систему добавляется пользователь с именем учётной записи ftp. Предназначение этой учётной записи — организация доступа к каталогу анонимного FTP. По умолчанию vsftpd разрешает доступ на чтение анонимным пользователям к домашнему каталогу учётной записи ftp. Не забудьте отключить его, если это вам не нужно, изменив значение соответствующего параметра:
anonymous_enable=NO
Если же доступ анонимных пользователей к вашему FTP-серверу разрешён, дополнительно вы можете отключить запрос пароля при анонимном логине:
no_anon_password=YES
Доступ локальных пользователей системы по умолчанию обычно отключён. Включить его при необходимости можно следующим образом:
local_enable=YES
Чтобы ваши локальные пользователи не «бродили» выше их домашних каталогов, можно включить следующее ограничение:
chroot_local_user=YES
Также можно использовать другой способ chroot пользователей, при котором ограничиваться будут не все пользователи, а лишь явно определённые. Для этого необходимо установить значение параметра chroot_local_user равным NO, создать файл с перечнем пользователей для которых chroot должен действовать (например, в /etc/vsftpd.chroot_list) и определить следующие два параметра:
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
Обратите внимание на то, что если при определённых выше двух параметрах значение параметра chroot_local_user является равным NO, то учётные записи, перечисленные в файле chroot_list_file НЕ будут попадать под ограничения chroot.
Если вы хотите ограничить количество одновременных соединений к vsftpd, есть два способа сделать это: при помощи возможностей суперсервера xinetd или, если ваш демон работает в автономном режиме, при помощи параметра (естественно 10 заменив на нужное вам количество допустимых одновременных подключений):
max_clients=10
По умолчанию в конфигурации vsftpd запрещены FTP-команды создания новых файлов и каталогов, таким образом ваши локальные пользователи по умолчанию не смогут получить доступ на запись в своих домашних каталогах. Исправить это легко можно при помощи определения параметра write_enable:
write_enable=YES
После того, как в конфигурации вашего сервера параметр write_enable установлен равным YES и anonymous_enable определён как YES вы можете управлять доступом относительно операций создания новых файлов/каталогов анонимными пользователями. Разрешить создавать новые каталоги анонимам:
anon_mkdir_write_enable=YES
Разрешить анонимным пользователям удалять и переименовывать файлы и каталоги:
anon_other_write_enable=YES
Разрешить анонимам загружать новые файлы:
anon_upload_enable=YES
Ограничить скорость обмена данными для анонимных пользователей в автономном режиме сервера можно следующим параметром (значение указывается в байтах/сек):
anon_max_rate=1024
По умолчанию umask файлов vsftpd использует равный 077, то есть файлы создаются доступными на чтение/запись только для владельца. Изменить значение umask анонимных пользователей можно при помощи параметра anon_umask:
anon_umask=022
а для локальных — при помощи параметра local_umask:
local_umask=022
При необходимости вы можете запретить пользователям скачивать файлы с вашего сервера:
download_enable=NO
Иногда бывает полезно скрыть реальные идентификаторы владельцев файлов, заменив их на идентификатор пользователя ftp:
hide_ids=YES
Сетевые параметры
Если ваш vsftpd запускается в автономном режиме, а не через xinetd, тогда необходимо явно указать это:
listen=YES
то же, для IPv6 (помните, что демон может работать одновременно только либо с IPv4, либо с IPv6):
listen_ipv6=YES
Определить IPv4 адрес, на который должен «вешаться» демон, можно параметром:
listen_address=192.168.0.1
Для IPv6:
listen_address6=fe80:0:0:0:202:b3ff:fe1e:8329
При необходимости вы можете отключить возможность использования клиентами PASV-режима:
pasv_enable=NO
Разное
Начиная с версии 2.0.7 vsftpd умеет удалять неудавшиеся закачки, если определить следующий параметр:
delete_failed_uploads=YES
По умолчанию vsftpd отображает таймштампы файлов в GMT. Если вам нужно, чтобы они отображались согласно локальному времени сервера, воспользуйтесь следующим параметром:
use_localtime=YES
вторник, 1 марта 2011 г.
Репозитории в debian
#============================================
# Стабильный выпуск:
#============================================
#--------------------------Репозитории безопасности-----------------------------
deb http://security.debian.org/ stable/updates contrib non-free main
# deb-src http://security.debian.org/ stable/updates contrib non-free main
# Зеркала:
#deb ftp://ftp.ru.debian.org/debian-security/ stable/updates main contrib non-free
#deb-src ftp://ftp.ru.debian.org/debian-security/ stable/updates main contrib non-free
#deb http://mirror.yandex.ru/debian-security/ stable/updates main contrib non-free
#deb-src http://mirror.yandex.ru/debian-security/ stable/updates main contrib non-free
#-------------------Оффициальный репозиторий Debian Lenny-----------------------
deb ftp://ftp.debian.org/debian/ stable main contrib non-free
# deb-src ftp://ftp.debian.org/debian/ stable main contrib non-free
# Зеркала:
#deb ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
#deb-src ftp://ftp.ru.debian.org/debian/ stable main contrib non-free
#deb ftp://mirror.yandex.ru/debian/ stable main contrib non-free
#deb-src ftp://mirror.yandex.ru/debian/ stable main contrib non-free
#------------------------Multimedia пакеты для Debian---------------------------
deb ftp://www.debian-multimedia.org stable main
#deb-src ftp://www.debian-multimedia.org stable main
# Зеркала:
#deb ftp://mirror.yandex.ru/debian-multimedia/ stable main
#deb-src ftp://mirror.yandex.ru/debian-multimedia/ stable main
#============================================
# Тестовый выпуск:
#============================================
#--------------------------Репозитории безопасности-----------------------------
deb http://security.debian.org/ testing/updates contrib non-free main
# deb-src http://security.debian.org/ testing/updates contrib non-free main
# Зеркала:
#deb ftp://ftp.ru.debian.org/debian-security/ testing/updates main contrib non-free
#deb-src ftp://ftp.ru.debian.org/debian-security/ testing/updates main contrib non-free
#deb http://mirror.yandex.ru/debian-security/ testing/updates main contrib non-free
#deb-src http://mirror.yandex.ru/debian-security/ testing/updates main contrib non-free
#-------------------Оффициальный репозиторий Debian Squeeze---------------------
deb ftp://ftp.debian.org/debian/ testing main contrib non-free
# deb-src ftp://ftp.debian.org/debian/ testing main contrib non-free
# Зеркала:
#deb ftp://ftp.ru.debian.org/debian/ testing main contrib non-free
#deb-src ftp://ftp.ru.debian.org/debian/ testing main contrib non-free
#deb ftp://mirror.yandex.ru/debian/ testing main contrib non-free
#deb-src ftp://mirror.yandex.ru/debian/ testing main contrib non-free
#------------------------Multimedia пакеты для Debian---------------------------
deb ftp://www.debian-multimedia.org testing main
# deb-src ftp://www.debian-multimedia.org testing main
# Зеркала:
#deb ftp://mirror.yandex.ru/debian-multimedia/ testing main
#deb-src ftp://mirror.yandex.ru/debian-multimedia/ testing main
#============================================
# Нестабильный выпуск:
#============================================
#-------------------Оффициальный репозиторий Debian Unstable--------------------
deb ftp://ftp.debian.org/debian/ unstable main contrib non-free
# deb-src ftp://ftp.debian.org/debian/ unstable main contrib non-free
# Зеркала:
#deb ftp://ftp.ru.debian.org/debian/ unstable main contrib non-free
#deb-src ftp://ftp.ru.debian.org/debian/ unstable main contrib non-free
#deb ftp://mirror.yandex.ru/debian/ unstable main contrib non-free
#deb-src ftp://mirror.yandex.ru/debian/ unstable main contrib non-free
#------------------------Multimedia пакеты для Debian---------------------------
deb ftp://www.debian-multimedia.org unstable main
# deb-src ftp://www.debian-multimedia.org unstable main
# Зеркала:
#deb ftp://mirror.yandex.ru/debian-multimedia/ unstable main
#deb-src ftp://mirror.yandex.ru/debian-multimedia/ unstable main
#=============================================
# Экспериментальный выпуск:
#=============================================
#----------------Оффициальный репозиторий Debian Experimental-------------------
deb ftp://ftp.debian.org/debian/ experimental main contrib non-free
# deb-src ftp://ftp.debian.org/debian/ experimental main contrib non-free
# Зеркала:
#deb ftp://ftp.ru.debian.org/debian/ experimental main contrib non-free
#deb-src ftp://ftp.ru.debian.org/debian/ experimental main contrib non-free
#deb ftp://mirror.yandex.ru/debian/ experimental main contrib non-free
#deb-src ftp://mirror.yandex.ru/debian/ experimental main contrib non-free
#-------------------------------------------------------------------------------
# в начале строки означает что она закоментирована.
суббота, 26 февраля 2011 г.
Вышли операционные системы FreeBSD 7.4 и 8.2
Разработчики популярной серверной операционной системы FreeBSD сегодня сообщили о выходе стабильных версий данной операционной системы в двух линейках - 7.4 и 8.2.
Некоторые из изменений 8.2:
- улучшена поддержка Xen HVM в FreeBSD/amd64 и Xen PV в FreeBSD/i386;
- ZFS on-disk format обновлён до версии 15;
- aesni(4) драйвер для криптографических инструкций Intel AESNI;
- обновлены BIND и OpenSSL;
- Gnome 2.32.1;
- KDE 4.5.5;
- множество улучшений и исправлений.
четверг, 24 февраля 2011 г.
пятница, 18 февраля 2011 г.
Windows PowerShell, коротко о главном
Знакомство с возможностями Windows PowerShell
Итак, вы — администратор, которому необходимо в кратчайший срок освоить Windows PowerShell. Первое, что вы, вероятно, предпримете (естественно, помимо обращения к документации и справочной системе), — воспользуетесь командой Help (рис. 1).Рис. 1
Внимательно изучив выведенную на экран информацию, мы придем к пониманию следующих концептуальных вещей: в Windows PowerShell существуют алиасы, командлеты, провайдеры, а также справочные файлы. Алиасы (alias) служат для упрощения ввода команд (например, clc — это алиас команды Clear-Content), командлеты (cmdlet) представляют собой реализацию всех встроенных в Windows PowerShell команд, провайдеры (provider) обеспечивают доступ к файловой системе, реестру, хранилищу сертификатов и т.п., а справочные файлы (helpfile) используются для получения дополнительной информации. Для получения подробного описания команды применяется следующий синтаксис:PS C:> Help Get-Command
В результате выполнения этой команды мы получим полное описание команды Get-Command, включая ее назначение, синтаксис, опции и т.п. (рис. 2).
Рис. 2
Для получения списка всех встроенных команд используем следующий синтаксис:PS C:> Get-Command
Обратите внимание на то, что все команды состоят из глагола и прилагательного (например, Get-Content, Export-Console) и все команды поддерживают единую систему именования — например для завершения чего-либо всегда используется глагол Stop, а не Kill, Terminate, Halt или другие синонимы, что существенно упрощает изучение возможностей PowerShell (рис. 3).
Рис. 3
Команда Get-Service служит для получения списка всех сервисов, запущенных на данном компьютере. Например,PS C:> Get-Service
возвращает список, представленный на рис. 4.
Рис. 4
Для получения списка процессов, запущенных в настоящий момент на компьютере, применяется команда Get-Process (рис. 5):Рис. 5
PS C:> Get-Process
В Windows PowerShell поддерживается автоматическое завершение ввода. Чтобы убедиться в этом, введите Get-P и нажмите клавишу TAB: вы получите возможность выбора всех команд, начинающихся с введенных символов.
Для получения информации только об одном процессе в качестве аргумента команды Get-Process задается имя этого процесса (рис. 6):
Рис. 6
PS C:> Get-Process explorer
Для того чтобы получить список всех процессов, названия которых начинаются с определенного символа, достаточно указать этот символ и «*» (рис. 7):
Рис. 7
PS C:> Get-Process i*
Обратите внимание на колонки, в которых содержится информация, — Handles, NMP(K) и т.п. По умолчанию информация выводится в виде таблицы, но на самом деле все команды возвращают объекты. Эти объекты могут быть переданы на вход другим командам с помощью символа «|» (рис. 8):
Рис. 8
PS C:> Get-Process i* | format-list
Теперь список процессов доступен в другом представлении. Для получения подробной информации о различных форматах можно использовать следующую команду:
PS C:> Help format *
Другие возможные форматы:
PS C:> Get-Process i* | format-wide
и
PS C:> Get-Process i* | format-custom
Поскольку на выходе всегда получается объект, можно манипулировать им для выполнения дополнительных операций, например фильтрации:
PS C:> Get-Process | where {$_.handlecount -gt 400}
или сортировки:
PS C:> Get-Process | where {$_.handlecount -gt 400} | sort-object Handles
Может возникнуть вполне резонный вопрос: а откуда мы узнали, что у объекта, описывающего процесс, есть свойство handlecount? Для получения списка всех свойств объекта применяется следующая команда (рис. 9):
Рис. 9
PS C:> Get-Process | Get-Member
Выполним команду Get-Process | Get-Member Company — при форматировании по умолчанию невозможно получить желаемые данные. Преобразуем полученную команду в:
PS C:> Get-Process | Get-Member Company | Format-List
Результат ее преобразования представлен на рис. 10.
Рис. 10
PS C:> Get-Process | sort-object Company | format-table -Group Company name, description, handles
Результат выполнения данной команды представлен на рис. 11.
Рис. 11
Команда stop-process позволяет остановить запущенный процесс, например:PS C:> Get-process notepad | stop-process
Такая возможность не всегда является безопасной, поэтому лучше использовать подобные команды с опцией whatif, которая показывает, что произойдет при выполнении той или иной команды, но на самом деле команда не выполняется:
PS C:> Get-Process notepad | stop-process –whatif
Кроме того, можно указывать на необходимость подтверждения перед выполнением команды:
PS C:> Get-Process notepad | stop-process –confirm
Результат выполнения команды с подтверждением представлен на рис. 12.
Рис. 12
В последнем примере мы получаем описание действий, которые выполняет команда, и можем выбрать, подтверждать ее выполнение или нет.Помимо этого можно создавать собственные пакетные файлы, представляющие собой файлы с расширением *.ps1, в которые помещаются команды PowerShell, и выполнять их. Для соблюдения безопасности пакетные файлы должны быть подписаны. При тестировании можно отключить требование по запуску только подписанных файлов:
PS C:> Set-ExecutionPolicy Unrestricted
но после окончания тестирования не забудьте снова включить данную опцию с помощью следующей команды:
PS C:> Set-ExecutionPolicy AllSigned
После знакомства с основами Windows PowerShell посмотрим, как с помощью данной утилиты можно решать различные административные задачи.
Работа с файловой системой
Одна из задач, с которой часто сталкиваются многие ИT-специалисты, связана с манипуляциями с файлами, такими как копирование, перемещение, переименование, удаление файлов и каталогов. На рис. 13 показаны основные команды Windows PowerShell, применяемые для манипуляций с файловой системой: new-item, copy-item, move-item, rename-item и remove-item.Рис. 13
В отличие от других оболочек, в которых существует и набор команд для файлов (например, delete или rename), и набор для каталогов (например, rd или md), в Windows PowerShell единый набор команд используется для манипуляций как с файлами, так и с каталогами.Первая команда в нашем примере — new-item TextFiles –itemtype directory — применяется для создания нового подкаталога TextFiles в текущем каталоге. Если опустить параметр –itemtype, то Windows PowerShell спросит, что мы создаем — файл (file) или каталог (directory). Отметим, что у команды new-item есть алиас — ni. В сокращенном виде наша первая команда будет выглядеть так:
PS C:> ni TextFiles –itemtype directory
Затем мы используем команду copy-item (алиасы — cpi, cp, copy) для копирования всех файлов с расширением *.txt в подкаталог TextFiles. Если применять данную команду в пакетном файле, имеет смысл сделать ее более понятной, указав параметры –path (источник) и –destination (приемник):
PS C:>copy-item –path ‘.\*.txt’ –destination ‘.\TextFiles’
После выполнения команды копирования мы используем команду set-location для перехода в подкаталог TextFiles. С помощью команды rename-item переименовываем файл psdemo.txt в psdemo.bak. При необходимости можно применять опции –path и –newName. После того как файл переименован, переносим его на один уровень вверх, используя команду move-item. Затем применяем команду set-location, а точнее — ее алиас sl для перехода в другой каталог. Манипуляции с файловой системой мы завершаем удалением всего каталога TextFiles, используя команду remove-item. Поскольку в каталоге TextFiles содержатся файлы, применяется опция –recurse. Если эта опция не указана, Windows PowerShell запросит подтверждение перед выполнением команды remove-item.
Работа с реестром
При выполнении различных настроек и попытках обнаружения каких-либо параметров нам иногда приходится обращаться к системному реестру в поисках ключей, значений и т.п. С использованием возможностей Windows PowerShell эта задача может быть решена достаточно простым способом. Возможности Windows PowerShell показаны на рис. 14.Рис. 14
Наша первая команда использует алиас sl для выполнения команды set-location, изменяющей наше текущее местоположение с файловой системы на ветвь HKEY_CURRENT_USER в системном реестре:PS C:\> sl hkcu:
Отметим, что, как и в случае работы с файловой системой, PowerShell применяет специальный провайдер для доступа к реестру.
Аналогами приведенной выше команды являются команды:
PS C:\> sl registry:hkcu
и
PS C:\> sl hkey_current_user
Следующая команда загружает содержимое всей ветви реестра HKEY_CURRENT_USER в переменную reg:
PS HKCU:\> $reg = gci . –rec –ea silentlycontinue
Для этого мы используем команду get-childitem (алиас — gci), принцип работы которой аналогичен работе с файловой системой. Первый аргумент этой команды — «.» — указывает на то, что мы хотим получить содержимое текущей ветви реестра — HKEY_CURRENT_USER. Второй аргумент является сокращением от опции –recurse и указывает на то, что нам нужен рекурсивный сбор данных из всех подветвей текущей ветви реестра. И наконец, третий аргумент — –ea silentlycontinue — указывает на то, что команда должна продолжать выполняться даже в случае возникновения ошибок, связанных с недостатком прав доступа к определенным подветвям реестра.
Следующая команда в нашем примере:
PS HKCU:\>$s = $reg | % {if (gp $_.pspath) –match ‘PowerShell’ ){$_.pspath}}
копирует из реестра данные, содержащие строку ‘PowerShell’. Мы начинаем с того, что берем объект reg и перенаправляем его в команду %, которая является алиасом команды for-each. Она выполняет рекурсивный обход всех элементов реестра, находящихся в объекте reg и на каждом шаге сохраняет элемент в специальном объекте PowerShell с именем ‘_’. В фигурных скобках мы указываем действия, которые должны выполняться на каждом шаге выполнения команды for-each. Внутри блока for-each мы используем проверку if для того, чтобы узнать, соответствуют ли текущая запись реестра и ее свойство pspath, которые мы получаем через обращение к команде get-itemproperty (через алиас gp), нашему критерию — наличию строки ‘PowerShell’. Если соответствие найдено, мы возвращаем значение свойства pspath. Все найденные соответствия сохраняются в объекте s.
Работу с реестром мы завершаем перенаправлением результатов поиска в команду select-object (через алиас select) и показываем два первых найденных результата. В качестве упражнения вы можете перенаправить финальные результаты в файл с помощью команды out-file.
Доступ к процессам
Еще одна задача, с которой могут столкнуться ИТ-специалисты, связана с обнаружением аномалий в работе системы, например процессов, которые потребляют большие объемы памяти. Давайте посмотрим, как эта задача решается средствами Windows PowerShell (рис. 15).Рис. 15
В первой команде мы сохраняем информацию о всех процессах, запущенных на данном компьютере, в переменной $allprocs:PS C:\> $allprocs = get-process
После этого мы перенаправляем полученную информацию команде for-each, которая тоже может быть указана алиасом % или foreach. Данная команда перебирает все объекты, связанные с процессом, и на каждом шаге сохраняет информацию во внутреннем объекте $_. Этот объект можно условно назвать текущим объектом. В качестве параметров для команды for-each мы указываем операцию сравнения значения свойства virtualmemorysize с интересующим нас размером памяти (20 Мбайт в нашем примере). Если значение этого свойства для текущего объекта больше заданного, мы выводим название процесса на экран. Отметим, что в PowerShell поддерживаются основные сокращения для указания размеров — KB, MB, GB, что очень полезно, поскольку не нужно считать нули при указании объемов памяти, дисков и т.п.
Доступ к системному журналу
При попытке обнаружения причин сбоев мы часто обращаемся к системному журналу, в котором хранится множество полезной информации о событиях, происходивших в системе. Обычно для исследования системного журнала применяется утилита Event Viewer (eventvwr.exe). В PowerShell мы можем воспользоваться встроенными командами, например командой get-eventlog, для быстрого исследования содержимого системного журнала (рис. 16).Рис. 16
Наша первая команда загружает ключевую информацию из системного журнала:PS C:\> get-eventlog –list
Без использования опции –list PowerShell запросит точное указание названия системного журнала. В нашем примере мы видим несколько точек входа в системном журнале: Application, Internet Explorer, System, Windows Power Shell и т.п. Наша следующая команда извлекает записи из системного журнала, которые имеют тип “Error”:
PS C:\> $bad = get-eventlog “System” | where-object { $_.EntryType –eq “Error” }
Мы используем команду get-eventlog, которой указываем параметр “System” для извлечения только системных записей, — мы могли бы более четко задать это, применив параметр logName. Содержимое переменной $bad передается на вход команде where-object для фильтрации только интересующих нас записей. В качестве аргументов команды where-object мы указываем на то, что ищем только записи, у которых свойство EntryType равно “Error”.
Мы завершаем исследование системного журнала выводом на экран пяти последних записей об ошибках, используя для этого команду select-object с параметром –last:
PS C:\> $bad | select-object –last 5
Заключение
Рис. 20
В приведенном выше примере показано, как можно использовать существующий код на VBScript в PowerShell. В первой строке мы создаем новый COM-объект, который представляет собой ядро выполнения скриптовых программ — ScriptControl. Затем мы указываем, что будем использовать язык Visual Basic Script. В третьей строке задается собственно код на VBScript — в нашем примере это вызов функции MsgBox, но на практике в переменную можно, например, загрузить код файла. И наконец, в последней строке мы добавляем код на VBScript в наш объект — и код поступает на выполнение.Эволюция вычислительной мощи CPU и GPU
Хотя десять лет назад компания Intel прогнозировала процессоры 10 ГГц к 2011 году, реальность оказалась совершенно другой. Кто мог предположить, что главная вычислительная мощь будет уже не у CPU, а у графических процессоров. Вот как выглядит график роста количества операций с плавающей запятой (FLOPs) у CPU и GPU за последние десять лет.

Тот же график на логарифмической шкале.

Понятно, что за счёт узкой специализации графический процессор может практически всю свою производительность отдавать на арифметические операции, тогда как архитектура CPU гораздо сложнее.
Тактовая частота процессоров Intel застыла в районе 3,4 ГГц.

Правда, общая производительность чипов продолжает расти за счёт увеличения числа ядер.

Тот же график на логарифмической шкале.
Понятно, что за счёт узкой специализации графический процессор может практически всю свою производительность отдавать на арифметические операции, тогда как архитектура CPU гораздо сложнее.
Тактовая частота процессоров Intel застыла в районе 3,4 ГГц.
Правда, общая производительность чипов продолжает расти за счёт увеличения числа ядер.
Подписаться на:
Сообщения (Atom)