Просмотр информации о компьютере, на котором запущен Hammerspoon
Примечания:
Вызовы сети/имени хоста могут быть медленными, так как могут вызываться вызовы разрешения сети, которые являются синхронными и заблокируют Hammerspoon, пока они не завершатся.
Запрос статистики использования ЦП для заданного интервала времени с помощью hs.host.cpuUsageTicks и возврат результатов в процентах.
Параметры
period — необязательное значение, определяющее время между образцами, собранными для расчета статистики использования ЦП.
Если callback не указано, это необязательное целое число, по умолчанию 100000, определяющее количество микросекунд блокировки между образцами, собранными. Обратите внимание, что Hammerspoon заблокируется на этот период времени во время выполнения этой функции.
Если callback указано, это необязательное число, по умолчанию 1,0, определяющее количество секунд между образцами, собранными. Hammerspoon не будет заблокирован в течение этого периода.
callback — необязательная функция обратного вызова, которая получит статистику использования ЦП в таблице, описанной ниже, в качестве единственного аргумента.
Возвращает
Если функция обратного вызова не указана, эта функция вернёт таблицу, содержащую следующее:
Отдельные таблицы, индексируемые номером ядра, для каждого ядра процессора со следующими ключами в каждой подтаблице:
user — процент времени ЦП, занимаемого процессами уровня пользователя.
system — процент времени ЦП, занимаемого процессами уровня системы (ядра).
nice — процент времени ЦП, занимаемого процессами уровня пользователя с положительным значением nice. (См. примечания ниже)
active — для удобства, когда вам нужен только общий процент использования ЦП, это сумма user, system и nice.
idle — процент времени ЦП, потраченного в режиме ожидания
Ключ overall, содержащий те же ключи, что и выше, но основанные на среднем значении всех ядер.
Ключ n, содержащий количество обнаруженных ядер.
Если функция обратного вызова указана, эта функция вернёт таблицу-заполнитель со следующими методами мета:
hs.host.cpuUsage:finished() — возвращает булево значение, указывающее, был ли второй образец использования ЦП собран (true) или нет (false).
hs.host.cpuUsage:stop() — прерывает сбор образцов. Функция обратного вызова не будет вызвана.
Результаты статистики использования ЦП будут отправлены в виде таблицы, описанной выше, в функцию обратного вызова.
Примечания
Если функция обратного вызова не указана, Hammerspoon заблокируется (т.е. никакая другая активность Hammerspoon не может произойти) во время выполнения этой функции на period микросекунд (1 секунда = 1 000 000 микросекунд). Значение по умолчанию — 1/10 секунды. Если period слишком мало, некоторые статистические данные ЦП могут привести к nan (не число).
Для справки, команда top имеет по умолчанию интервал 1 секунда между образцами.
Подтаблицы для каждого ядра и overall имеют метод мета __tostring(), который позволяет выводить их содержимое в консоли Hammerspoon, набрав hs.host.cpuUsage()[#], где # — ядро, которое вас интересует, или строку "overall".
Возвращает таблицу, содержащую текущую информацию об использовании ЦП для системы в ticks с момента последнего включения.
Параметры
Нет
Возвращает
Таблица, содержащая следующее:
Отдельные таблицы, индексируемые номером ядра, для каждого ядра процессора со следующими ключами в каждой подтаблице:
user — количество тактов, которые ядро процессора провело в пользовательском режиме с момента запуска системы.
system — количество тактов, которые ядро процессора провело в системном режиме с момента запуска системы.
nice
active — для удобства, когда вам нужен только общий процент использования ЦП, это сумма user, system и nice.
idle — количество тактов, которые ядро процессора провело в режиме ожидания
Ключ overall содержащий те же ключи, что и выше, но основанные на суммарном значении всех ядер процессора для системы.
Ключ n, содержащий количество обнаруженных ядер.
Примечания
Такты режима процессора обновляются во время прерываний системы и увеличиваются в зависимости от режима, в котором находится ЦП во время прерывания. По своей природе это всегда будет приблизительно, и один вызов этой функции вернёт текущие значения тактов с момента последней перезагрузки системы.
Чтобы получить снимок использования системы "в данный момент", необходимо получить два образца и вычислить разницу между ними. Функция hs.host.cpuUsage является обёрткой, которая это делает за вас и возвращает статистику использования ЦП в процентах от общего числа тактов, которые произошли в течение периода выборки, который вы указываете при вызове hs.host.cpuUsage.
Исторически на системах на основе Unix состояние ЦП nice представляет процессы, для которых приоритет выполнения был снижен, чтобы позволить другим процессам с более высоким приоритетом получить доступ к большему количеству системных ресурсов. Исходный код версии ядра XNU, в настоящее время предоставляемой Apple (для macOS 10.12.3), показывает, что это значение, возвращаемое host_processor_info, жёстко задано в 0. Для полноты, это значение включено в статистику, возвращаемую этой функцией, но, если Apple не внесёт изменений в будущем, оно, вероятно, не будет содержать полезной информации.
Адаптировано в основном из кода, найденного на http://stackoverflow.com/questions/6785069/get-cpu-percent-usage
Возвращает недавно сгенерированный глобальный уникальный идентификатор в виде строки
Параметры
Нет
Возвращает
недавно сгенерированный глобальный уникальный идентификатор в виде строки
Примечания
См. также hs.host.uuid
Глобальный уникальный идентификатор процесса включает имя хоста, идентификатор процесса и временную метку, что гарантирует уникальность идентификатора в сети. Эта функция генерирует новую строку каждый раз при вызове и использует счётчик для обеспечения уникальности строк.
Это часто используется в качестве имени файла или каталога в сочетании с hs.host.temporaryDirectory() при создании временных файлов.
Возвращает модель и размер видеопамяти установленных графических процессоров.
Параметры
Нет
Возвращает
Таблица, пары ключ-значение которой представляют графические процессоры текущей системы. Каждый ключ — строка, содержащая имя установленного графического процессора, а его значение — размер видеопамяти графического процессора в МБ. Если размер видеопамяти не может быть определён для конкретного графического процессора, его значение будет равно -1,0.
Примечания
Если ваш графический процессор сообщает о размере памяти -1,0, пожалуйста, отправьте сообщение в репозиторий Hammerspoon на GitHub и включите любую релевантную информацию, например: модель Macintosh, версия macOS, встроенный или сторонний графический процессор, модель графического процессора и видеопамять по возможности (см. приложение "Сведения о системе" в папке "Утилиты" и посмотрите раздел "Графика/Экран"), и всё остальное, что, по вашему мнению, может быть важным.
Возвращает количество секунд, в течение которых компьютер был в режиме простоя.
Parameters
None
Returns
время простоя в секундах
Notes
Время простоя определяется как отсутствие перемещения мышью или ввода с клавиатуры и т. д. и определяется путем запроса к подсистеме HID (Human Interface Device).
Этот код напрямую вдохновлен кодом, найденным на http://www.xs-labs.com/en/archives/articles/iokit-idle-time
Версия операционной системы в виде таблицы с основными, второстепенными и дополнительными номерами.
Parameters
None
Returns
Версия операционной системы в виде таблицы, содержащей ключи major, minor и patch, соответствующие номеру версии, определенному, и ключ, названный «exact» или «approximation», в зависимости от метода определения информации о версии ОС.
Notes
До версии 10.10 (Yosemite) не было надежного способа получить точный номер версии OS X, не отобразив его в версию ядра Darwin, не отобразив его в AppKitVersionNumber (рекомендуемый метод) или не разобрав результат селектора operatingSystemVersionString NSProcessingInfo, что Apple заявляет, не гарантирует надежного разбора.
для версий OS X до 10.10 номер версии приблизительно определяется путем оценки AppKitVersionNumber. Для этих операционных систем определяется и устанавливается ключ approximate, так как точный номер патча определить окончательно невозможно.
для версий OS X, начиная с 10.10 и далее, точное значение номера версии можно определить с помощью селектора operatingSystemVersion NSProcessingInfo, и ключ exact определяется и устанавливается в значение true, если этот метод используется.
Версия операционной системы в виде читаемой строкой для человека.
Parameters
None
Returns
Версия операционной системы в виде читаемой строкой для человека.
Notes
Согласно документации разработчика OS X, «строка версии операционной системы читабельна для человека, локализована и подходит для отображения пользователю. Эта строка не подходит для разбора».
Возвращает недавно сгенерированный UUID в виде строки.
Parameters
None
Returns
недавно сгенерированный UUID в виде строки
Notes
См. также hs.host.globallyUniqueString
UUID (Universally Unique Identifiers), также известные как GUID (Globally Unique Identifiers) или IID (Interface Identifiers), представляют собой 128-битные значения. UUID, созданные NSUUID, соответствуют RFC 4122 версии 4 и создаются с использованием случайных байтов.
Возвращает таблицу, содержащую статистику виртуальной памяти для текущей машины, а также размер страницы (в байтах) и физический размер памяти (в байтах).
Parameters
None
Returns
Таблица, содержащая следующие ключи:
anonymousPages — общее количество страниц, которые являются анонимными
cacheHits — количество попаданий в кэш объектов
cacheLookups — количество обращений к кэшу объектов
fileBackedPages — общее количество страниц, которые являются файловыми (не подкачка)
memSize — физический размер памяти в байтах
pageIns — общее количество запросов на страницы из кэша (например, кэш inode).
pageOuts — общее количество страниц, которые были выгружены.
pageSize — размер страницы в байтах
pagesActive — общее количество страниц, которые в данный момент используются и могут быть подкачены.
pagesCompressed — общее количество страниц, которые были сжаты сжатием VM.
pagesCopyOnWrite — количество ошибок, которые привели к копированию страницы (обычно вызывается ошибками копирования при записи).
pagesDecompressed — общее количество страниц, которые были распакованы сжатием VM.
pagesFree — общее количество свободных страниц в системе.
pagesInactive — общее количество страниц в списке неактивных.
pagesPurgeable — общее количество удаляемых страниц.
pagesPurged — общее количество страниц, которые были удалены.
pagesReactivated — общее количество страниц, которые были перемещены из списка неактивных в список активных (восстановлены).
pagesSpeculative — общее количество страниц в списке прогнозируемых.
pagesThrottled — общее количество страниц в списке с ограниченной скоростью (не привязанные, но не подкачиваемые).
pagesUsedByVMCompressor — количество страниц, используемых для хранения сжатых страниц VM.
pagesWiredDown — общее количество страниц, закрепленных за диском. То есть страницы, которые не могут быть выгружены.
pagesZeroFilled — общее количество страниц, которые были заполнены нулями по требованию.
swapIns — общее количество сжатых страниц, которые были помещены на диск.
swapOuts — общее количество сжатых страниц, которые были возвращены с диска.
translationFaults — количество вызовов функции "vm_fault".
uncompressedPages — общее количество страниц (не сжатых) в кэше сжатия.
Notes
Возвращаемая таблица имеет метаметод __tostring(), который позволяет перечислить ее содержимое в консоли Hammerspoon, набрав hs.host.vmStats().
За исключением добавления cacheHits, cacheLookups, pageSize и memSize, результаты этой функции должны быть идентичны команде OS X vm_stat.
При адаптации использовался преимущественно исходный код команды vm_stat Apple, расположенный по адресу http://www.opensource.apple.com/source/system_cmds/system_cmds-643.1.1/vm_stat.tproj/vm_stat.c
Возвращает таблицу информации о подключенных к системе томах диска.
Параметры
showHidden — необязательный булевый параметр, true для отображения скрытых томов, false — для их скрытия. По умолчанию false.
Возвращаемое значение
Таблица информации, где ключи — пути дисков.
Примечания
Возможные ключи в таблице:
NSURLVolumeTotalCapacityKey — размер тома в байтах
NSURLVolumeAvailableCapacityKey — доступное пространство на томе в байтах
NSURLVolumeIsAutomountedKey — булево значение, указывающее, был ли том автоматически смонтирован
NSURLVolumeIsBrowsableKey — булево значение, указывающее, можно ли просматривать том
NSURLVolumeIsEjectableKey — булево значение, указывающее, следует ли извлечь том перед удалением носителя
NSURLVolumeIsInternalKey — булево значение, указывающее, является ли том внутренним или внешним накопителем
NSURLVolumeIsLocalKey — булево значение, указывающее, является ли том локальным или удалённым
NSURLVolumeIsReadOnlyKey — булево значение, указывающее, является ли том только для чтения
NSURLVolumeIsRemovableKey — булево значение, указывающее, можно ли физически извлечь носитель тома из устройства (например, DVD)
NSURLVolumeMaximumFileSizeKey — максимальный размер файла, который может поддерживать том, в байтах
NSURLVolumeUUIDStringKey — UUID файловой системы тома
NSURLVolumeURLForRemountingKey — для удалённых томов, сетевой URL тома
NSURLVolumeLocalizedNameKey — локализованное имя тома
NSURLVolumeNameKey — имя тома
NSURLVolumeLocalizedFormatDescriptionKey — локализованное описание тома
Не все ключи будут присутствовать для всех томов
Значения NSURLVolumeIsEjectableKey и NSURLVolumeIsRemovableKey не всегда полезны для определения того, является ли устройство съемным в современном понимании (например, USB-накопитель), так как большая часть этой терминологии относится к временам, когда USB не существовал, а съемными были такие устройства, как дискеты/DVD. Если вы пытаетесь определить, является ли устройство нефиксированным в компьютере, вам может потребоваться использовать комбинацию этих ключей, но точная комбинация не согласуется между версиями macOS.