OS


Стабильность: 2 – Стабильная

Модуль os предоставляет набор операционных системных методов. Его можно вызвать так:

const os = require('os');

os.EOL

Добавлено в v0.7.8
  • <Строка>

Строковая константа, определяющая маркер конца текущей строки:

  • \n на POSIX
  • \r \n на Windows

os. arch()

Добавлено в v0.5.0

Метод os.arch() возвращает строку, которая определяет архитектуру CPU на данной ОС для которой компилируется бинарный Node.js.

Текущие возможные значения:

'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390','s390x', 'x32', 'x64' и 'x86'

Равнозначно process.arch.

os.constants

  • <Объект>

Возвращает объект, содержащий общеиспользуемые константы операционнной системы для кодировки ошибок, сигналов процессов и тому подобное. Заданные константы описываются в константах ОС.

os.cpus()

Добавлено в v0.3.3
  • Возвращает <Массив>

Метод os.cpus() возвращает массив объектов, которые содержат информацию про каждый установленное ядро/CPU.

Свойства каждого объекта включают в себя:

  • model <Строка>
  • speed <число> (в МГц)
  • times <объект>
    • user <число> Число миллисекунд, которые CPU провел в пользовательском режиме
    • nice <число> Число миллисекунд, которые CPU провел в nice режиме.
    • sys <число> Число миллисекунд, которые CPU провел в sys режиме.
    • Idle <число> Число миллисекунд, которые CPU провел в idle режиме.
    • Irq <число> Число миллисекунд, которые CPU провел в irq режиме.

Пример:


[
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 252020,
      nice: 0,
      sys: 30340,
      idle: 1070356870,
      irq: 0
    }
  },
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 306960,
      nice: 0,
      sys: 26980,
      idle: 1071569080,
      irq: 0
    }
  },
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 248450,
      nice: 0,
      sys: 21750,
      idle: 1070919370,
      irq: 0
    }
  },
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 256880,
      nice: 0,
      sys: 19430,
      idle: 1070905480,
      irq: 20
    }
  },
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 511580,
      nice: 20,
      sys: 40900,
      idle: 1070842510,
      irq: 0
    }
  },
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 291660,
      nice: 0,
      sys: 34360,
      idle: 1070888000,
      irq: 10
    }
  },
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 308260,
      nice: 0,
      sys: 55410,
      idle: 1071129970,
      irq: 880
    }
  },
  {
    model: 'Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz',
    speed: 2926,
    times: {
      user: 266450,
      nice: 1480,
      sys: 34920,
      idle: 1072572010,
      irq: 30
    }
  }
]

Примечание: так как значения nice являются заданными для UNIX, на Windows значения nice для всех процессоров всегда равняются 0.

os.endianness()

Добавлено в v0.9.4
  • Возвращает: <строка>

Метод os.endianness() возвращает строку, определяющую порядок байт CPU для которого скомпилирован бинарный Node.js.

Возможные значения:

  • ‘BE’ для большого эндиана
  • ‘LE’ для малого эндиана

os.freemem()

Добавлено в v0.3.3
  • Возвращает: <Integer>

Метод os.freemem() возвращает количество свободной системной памяти в байтах в виде целого числа.

os.homedir()

Добавлено в v2.3.0
  • Возвращает: <строка>

Метод os.homedir() возвращает домашнюю директорию для текущего пользователя в виде строки.

os.hostname()

Добавлено в v0.3.3
  • Возвращает: <строка>

Метод os.hostname() возвращает имя хоста операционной системы в в виде строки.

os.loadavg()

Добавлено в v0.3.3
  • Возвращает: <массив>

Метод os.loadavg() возвращает массив, содержащий средние значения нагрузки за 1, и 15 минут.

Средняя нагрузка – это мера активности системы, вычисленная операционной системой и выраженная в виде дробного числа. Следуя правилу большого пальца, средняя нагрузка в идеале должна быть меньше, чем число логических CPU в системе.

Средняя нагрузка является исключительно UNIX-овым концептом и не имеет реальных аналогов на Windows. На Windows данный метод всегда будет возвращать значения [0, 0, 0].

os.networkInterfaces()

Добавлено в v0.6.0
  • Возвращает: <объект>

Метод os.networkInterfaces() возвращает объект, содержащий только сетевые интерфейсы, которые были назначены на адрес сети.

Каждый ключ возвращаемого объекта указывает на сетевой интерфейс. Соответствующее ему значение является массивом объектов, каждый из которых описывает назначенный адрес сети.

Свойства, доступные для назначенного объекта адреса сети, включают:

  • address <Строка> Назначенный адрес IPv4 или IPv6
  • netmask <Строка> Сетевая маска IPv4 или IPv6
  • family <Строка> IPv4или IPv6
  • mac <Строка> MAC-адрес сетевого интерфейса
  • internal <boolean> true, если сетевой интерфейс является замкнутым либо недоступным удаленно, во всех прочих случаях false
  • scopeid <число> IDокружения для IPv6(задается только если familyимеет значение IPv6)

{
	  lo: [
    {
     address: '127.0.0.1',
     netmask: '255.0.0.0',
	      family: 'IPv4',
     mac: '00:00:00:00:00:00',
      internal: true
    },
    {
      address: '::1',
      netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
     family: 'IPv6',
      mac: '00:00:00:00:00:00',
      internal: true
    }
  ],
  eth0: [
    {
      address: '192.168.1.108',
      netmask: '255.255.255.0',
      family: 'IPv4',
      mac: '01:02:03:0a:0b:0c',
      internal: false
    },
    {
      address: 'fe80::a00:27ff:fe4e:66a1',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '01:02:03:0a:0b:0c',
      internal: false
    }
  ]
}

os.platform()

Добавлено в v0.5.0
  • Возвращает: <Строка>

Метод os.plaform() возвращает строку, показывающущю, какая платформа ОС была установлена во время компиляции Node.js.

Возможные значения:

  • 'aix'
  • 'darwin'
  • 'freebsd'
  • 'linux'
  • 'openbsd'
  • 'sunos'
  • 'win32'

Является эквивалентом process.platform.

Примечание: значение ‘android’ тоже может возвращаться, если Node.js билдится на операционной системе Android. Однако, поддержка Node.js на Android пока что экспериментальна.

os.release()

Добавлено в v0.3.3
  • Возвращает: <Строка>

Метод os.release() возвращает строку, показывающую релиз операционной системы.

Примечание: на системах POSIX релиз ОСопределяется вызовом uname(3). На Windows используют GetVersionExW().

os.tmpdir()

Добавлено в v0.9.9
  • Возвращает: <Строка>

Метод os.tmpdir() возвращает строку, задающую операционную директорию по умолчанию для хранения временных файлов.

os.totalmem()

Добавлено в v0.3.3
  • Возвращает: <Integer>

Метод os.totalmem() возвращает все количество системной памяти в байтах в виде целого числа.

os.type()

Добавлено в v0.3.3
  • Возвращает: <Строка>

Метод os.type() возвращает строку, показывающую имя операционной системы, возвращенное uname(3). Например, ‘Linux’ на Linux, ‘Darwin’ на OS X и ‘Windows_NT’ на Windows.

Больше информации про запуск uname на разных операционных системах на https://en.wikipedia.org/wiki/Uname#Examples

os.uptime()

Добавлено в v0.3.3
  • Возвращает: <Integer>

Метод os.uptime() возвращает время безотказной работы системы в секундах.

Примечание: по меркам целых значений Node.js, данное число представлено как double. Однако, дробные секунды не могут быть возвращены и данное значение обычно принимается как целое.

os.userInfo([options])

Добавлено в v6.0.0
  • options <Объект>
    • encoding <Строка> Кодировка символов, используемая для интерпретации получаемых строк. Если encoding устанавливается на ‘buffer’, значения username, shell, и homedir будут экземплярами Buffer. (по умолчанию ‘utf8’)
  • Возвращает: <Объект>

Метод os.userInfo() возвращает информацию о текущем пользователе – на платформах POSIX это обычно входит в настройки файла пароля. Возвращенный объект включает в себя username, uid, gid, shell, и homedir. На Windows поля uidи gidимеют значение -1 и shellимеет значение null.

Значение homedir, возвращаемое через os.userInfo() предоставляется операционной системой. Эти отличается от результата работы os.homedir(), который запрашивает некоторые переменные окружения для домашней директории прежде, чем получить ответ от системы.

Константы ОС

Нижеприведенные константы экспортируются из os.constants.

Примечание: не на каждой операционной системе доступны все константы.

Константы сигналов

Эти константы сигналов экспортируются из os.constants.signals:

КонстантаОписание
SIGHUPПосылается для индикации закрытия управляющего терминала или существования родительского процесса
SIGINTПосылается для индикации, когда пользователь хочет прервать процесс ((Ctrl+C))
SIGQUITПосылается для индикации, когда пользователь хочет завершить процесс и выполнить сброс ядра.
SIGILLОтправляется в процесс для уведомления о попытках выполнения недопустимой, некорректной, неизвестной или привелигированной инструкции.
SIGTRAPОтправляется в процесс, когда происходит иключение.
SIGABRTОтправляется в процесс для запроса о прерывании.
SIGIOTСиноним SIGABRT
SIGBUSОтправляется в процесс для предупреждения об ошибке шины.
SIGFPEОтправляется в процесс для предупреждения о выполнении недопустимой арифметической операции.
SIGKILLОтправляется в процесс для его немедленного завершения.
SIGUSR1 SIGUSR2Отправляется в процесс для определения заданных пользователем условий.
SIGSEGVОтправляется в процесс для уведомления об ошибке сегментации.
SIGPIPEОтправляется в процесс при попытке записи в отключенный пайп.
SIGALRMОтправляется в процесс, когда истекает системный таймер.
SIGTERMОтправляется в процесс для запроса о завершении.
SIGCHLDОтправляется в процесс, когда завершается дочерний процесс.
SIGSTKFLTОтправляется в процесс для индикации ошибки стека на сопроцессоре.
SIGCONTОтправляется с инструкциями операционной системе для продолжения приостановленного процесса.
SIGSTOPОтправляется с инструкциями операционной системе для остановки процесса.
SIGTSTPОтправляется в процесс с запросом на остановку.
SIGBREAKОтправляется для индикации, когда пользователь хочет прервать процесс.
SIGTTINОтправляется в процесс, когда он читает TTY, находясь в режиме бэкграунда.
SIGTTOUОтправляется в процесс, когда он записывает в TTY, находясь в режиме бэкграунда.
SIGURGОтправляется в процесс, когда нужно прочитать срочные данные из сокета
SIGXCPUОтправляется в процесс, когда он превосходит свой лимит использования CPU.
SIGXFSZОтправляется в процесс, когда он создает больший файл, чем максимально допустимый.
SIGVTALRMОтправляется в процесс при истечении виртуального таймера.
SIGPROFОтправляется в процесс при истечении системного таймера.
SIGWINCHОтправляется в процесс, когда управляющий терминал меняет размер.
SIGIOОтправляется в процесс, когда доступен ввод-вывод (I/O)
SIGPOLLСиноним SIGIO
SIGLOSTОтправляется в процесс, когда теряется блокировщик файла.
SIGPWRОтправляется в процесс для уведомления об ошибке включения.
SIGINFOСиноним SIGPWR
SIGSYSОтправляется в процесс для уведомления о некорректном аргументе.
SIGUNUSEDСиноним SIGSYS

Константы ошибок

Следующие константы ошибок экспортируются из os.constants.errno:

Константы ошибок POSIX

КонстантаОписание
E2BIGПоказывает, что список аргументов длиннее, чем ожидалось
EACCESПоказывает, что операция не получила достаточного разрешения
EADDRINUSEАдрес сети уже используется
EADDRNOTAVAILАдрес сети на данный момент недоступен для использования
EAFNOSUPPORTСемейство адресов сети не поддерживается
EAGAINНа данный момент нет доступных данных, нужно попробовать выполнить операцию позже
EALREADYСокет уже обрабатывает соединение
EBADFФайловый дескриптор невалидный
EBADMSGНедопустимые данные
EBUSYДевайс или источник заняты
ECANCELEDОперация была отменена
ECHILDДочерний процесс не существует
ECONNABORTEDСетевое соединение было прервано
ECONNREFUSEDСетевое соединение отклонено
ECONNRESETСетевое соединение сброшено
EDEADLKУдалось избежать окончания ресурсов
EDESTADDRREQТребуется адрес назначения
EDOMАргумент находится вне домена функции
EDQUOTПревышено выделенное пространство диска
EEXISTФайл уже существует
EFAULTНедопустимый указатель адреса
EFBIGФайл слишком большой
EHOSTUNREACHХост недоступен
EIDRMИдентификатор был удален
EILSEQНедопустимая последовательность байтов
EINPROGRESSОперация уже выполняется
EINTRВызов функции был прерван
EINVALПолучен недопустимый аргумент
EIOОшибка ввода-вывод
EISCONNСокет подключен
EISDIRПуть является директорией
ELOOPСлишком много уровней символьных ссылок в пути
EMFILEСлишком много открытых файлов
EMLINKСлишком много ссылок на файл
EMSGSIZEПолученное сообщение слишком длинное
EMULTIHOPБыла попытка многоинтервального подключения
ENAMETOOLONGИмя файла слишком длинное
ENETDOWNСеть «упала»
ENETRESETСоединение было прервано сетью
ENETUNREACHСеть недоступна
ENFILEСлишком много открытых файлов в системе
ENOBUFSНет доступного места для буфера
ENODATAНет доступных сообщений в первой очереди на чтение в стриме
ENODEVНет такого девайса
ENOENTНет такого файла или директории
ENOEXECФормат выполнения ошибочен
ENOLCKНет доступных блокировок
ENOLINKСсылка была разорвана
ENOMEMНедостаточно места
ENOMSGНет сообщений заданного типа
ENOPROTOOPTДанный протокол недоступен
ENOSPCНет доступного места на девайсе
ENOSRНет доступных ресурсов стрима
ENOSTRДанный ресурс не является стримом
ENOSYSФункция не была реализована
ENOTCONNСокет не был подключен
ENOTDIRПуть не является директорией
ENOTEMPTYДиректория не является пустой
ENOTSOCKДанный элемент не является сокетом
ENOTSUPДанная операция не поддерживается
ENOTTYНекорректные операции для управления вводом-выводом
ENXIOНет такого девайса или адреса
EOPNOTSUPPОперация не поддерживается на сокете. Следует помнить, что так как ENOTSUP и EOPNOTSUPP имеют одинаковые значения на Linux, соответственно POSIX.1 значения этих ошибок должны быть разделены.
EOVERFLOWЗначение слишком большое для хранения в данном типе данных
EPERMОперация не разрешена
EPIPEНерабочий пайп
EPROTOОшибка протокола
EPROTONOSUPPORTПротокол не поддерживается
EPROTOTYPEНеправильный тип протокола для сокета
ERANGEРезультат слишком большой
EROFSФайловая система открыта только для чтения
ESPIPEНедопустимая операция поиска
ESRCHНет такого процесса
ESTALEФайловый обработчик устарел
ETIMEВышло время
ETIMEDOUTВремя соединения вышло
ETXTBSYТекстовый файл занят
EWOULDBLOCKОперация будет заблокирована
EXDEVНеточная ссылка

Константы ошибок для Windows

Следующие коды ошибок являются характерными для Windows.

КонстантаОписание
WSAEINTRУказывает на прерванный вызов функции
WSAEBADFУказывает на недопустимый файловый обработчик
WSAEACCESНет достаточно прав для выполнения операции
WSAEFAULTНедопустимый указатель адреса
WSAEINVALБыл передан недопустимый аргумент
WSAEMFILEСлишком много открытых файлов
WSAEWOULDBLOCKРесурс временно недоступен
WSAEINPROGRESSОперация на данный момент выполняется
WSAEALREADYОперация уже выполняется
WSAENOTSOCKРесурс не является сокетом
WSAEDESTADDRREQТребуется адрес назначения
WSAEMSGSIZEРазмер сообщения слишком большой
WSAEPROTOTYPEНеправильный тип протокола для сокета
WSAENOPROTOOPTОшибка протокола
WSAEPROTONOSUPPORTПротокол не поддерживается
WSAESOCKTNOSUPPORTТип сокета не поддерживается
WSAEOPNOTSUPPОперация не поддерживается
WSAEPFNOSUPPORTСемейство протоколов не поддерживается
WSAEAFNOSUPPORTСемейство адресов не поддерживается
WSAEADDRINUSEАдрес сети недоступен
WSAENETDOWNСеть «упала»
WSAENETUNREACHСеть недоступна
WSAENETRESETСетевое соединение было сброшено
WSAECONNABORTEDСоединение было прервано
WSAECONNRESETСоединение было сброшено пиром
WSAENOBUFSНет свободного места для буфера
WSAEISCONNСокет уже подключен
WSAENOTCONNСокет не подключен
WSAESHUTDOWNДанные не могут быть отправлены после закрытия сокета
WSAETOOMANYREFSСлишком много ссылок
WSAETIMEDOUTВремя соединения вышло
WSAECONNREFUSEDСоединение отклонено
WSAELOOPИмя не может быть переведено
WSAENAMETOOLONGИмя слишком длинное
WSAEHOSTDOWNСетевой хост «упал»
WSAEHOSTUNREACHНет маршрута к сетевому хосту
WSAENOTEMPTYДиректория не является пустой
WSAEPROCLIMСлишком много процессов
WSAEUSERSПользовательская квота была превышена
WSAEDQUOTДисковая квота была превышена
WSAESTALEСсылка на устаревший файловый обработчик
WSAEREMOTEЭлемент удален
WSASYSNOTREADYСетевая подсистема не готова
WSAVERNOTSUPPORTEDВерсия winsock.dll недоступна
WSANOTINITIALISEDУспешный запуск WSAStartup не был выполнен
WSAEDISCONТихое закрытие в процессе
WSAENOMOREНет больше результатов
WSAECANCELLEDОперация была отменена
WSAEINVALIDPROCTABLEНедопустимая таблица процедурный вызовов
WSAEINVALIDPROVIDERНедопустимый сервисный провайдер
WSAEPROVIDERFAILEDINITСервисный провайдер не прошел инициализацию
WSASYSCALLFAILUREОшибка системного вызова
WSASERVICE_NOT_FOUNDСервис не был найден
WSATYPE_NOT_FOUNDТип класса не найден
WSA_E_NO_MOREНет больше результатов
WSA_E_CANCELLEDВызов был отменен
WSAEREFUSEDЗапрос к базе данных был отклонен

Константы libuv

КонстантаОписание
UV_UDP_REUSEADDR