Перейти к содержанию

Операционная система

v18.x.x

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

АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.

Модуль node:os предоставляет методы и свойства утилит, связанных с операционной системой. Доступ к нему можно получить с помощью:

1
const os = require('node:os');

os.EOL

Маркер конца строки, специфичный для операционной системы.

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

os.availableParallelism()

Возвращает оценку количества параллелизма по умолчанию, которое программа должна использовать. Всегда возвращает значение больше нуля.

Эта функция является небольшой оберткой для функции libuv uv_available_parallelism().

os.arch()

Возвращает архитектуру процессора операционной системы, для которой был скомпилирован двоичный файл Node.js. Возможные значения: 'arm', 'arm64', 'ia32', 'mips', 'mipsel', 'ppc', 'ppc64', 's390', 's390x', и 'x64'.

Возвращаемое значение эквивалентно process.arch.

os.constants

Содержит часто используемые константы, специфичные для операционной системы, для кодов ошибок, сигналов процесса и так далее. Определенные константы описаны в OS constants.

os.cpus()

  • Возвращает: {Object[]}

Возвращает массив объектов, содержащих информацию о каждом логическом ядре процессора.

Свойства, включенные в каждый объект, включают:

  • модель <string>
  • скорость <number> (в МГц)
  • times <Object>
    • user <number> Количество миллисекунд, проведенных процессором в пользовательском режиме.
    • nice <number> Количество миллисекунд, проведенных процессором в приятном режиме.
    • sys <number> Количество миллисекунд, проведенных процессором в режиме sys.
    • idle <number> Количество миллисекунд, проведенных процессором в режиме простоя.
    • irq <number> Количество миллисекунд, проведенных процессором в режиме irq.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
[
    {
        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,
        },
    },
];

Значения nice относятся только к POSIX. В Windows значения nice для всех процессоров всегда равны 0.

os.cpus().length не следует использовать для вычисления количества параллелизма, доступного приложению. Для этой цели используйте os.availableParallelism().

os.devNull

Путь к файлу нулевого устройства в зависимости от платформы.

  • \.\nul в Windows
  • /dev/null на POSIX

os.endianness()

Возвращает строку, определяющую эндианальность процессора, для которого был скомпилирован двоичный файл Node.js.

Возможные значения: 'BE' для big endian и 'LE' для little endian.

os.freemem()

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

os.getPriority([pid])

  • pid <integer> Идентификатор процесса для получения приоритета планирования. По умолчанию: 0.
  • Возвращает: <integer>

Возвращает приоритет планирования для процесса, указанного pid. Если pid не указан или равен 0, возвращается приоритет текущего процесса.

os.homedir()

Возвращает строковый путь к домашнему каталогу текущего пользователя.

На POSIX используется переменная окружения $HOME, если она определена. В противном случае используется эффективный UID для поиска домашнего каталога пользователя.

В Windows используется переменная окружения USERPROFILE, если она определена. В противном случае используется путь к каталогу профиля текущего пользователя.

os.hostname()

Возвращает имя хоста операционной системы в виде строки.

os.loadavg()

  • Возвращает: {число[]}

Возвращает массив, содержащий средние значения нагрузки за 1, 5 и 15 минут.

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

Среднее значение нагрузки - это понятие, специфичное для Unix. В Windows возвращаемое значение всегда равно [0, 0, 0].

os.machine()

  • Возвращает {строку}

Возвращает тип машины в виде строки, например, arm, arm64, aarch64, mips, mips64, ppc64, ppc64le, s390, s390x, i386, i686, x86_64.

В POSIX системах тип машины определяется вызовом uname(3). В Windows используется RtlGetVersion(), а если она недоступна, то используется GetVersionExW(). Дополнительную информацию см. в https://en.wikipedia.org/wiki/Uname#Examples.

os.networkInterfaces()

Возвращает объект, содержащий сетевые интерфейсы, которым был присвоен сетевой адрес.

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

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

  • address <string> Назначенный адрес IPv4 или IPv6.
  • netmask <string> Маска сети IPv4 или IPv6
  • family <string> либо IPv4, либо IPv6.
  • mac <string> MAC-адрес сетевого интерфейса
  • internal <boolean> true, если сетевой интерфейс является loopback или подобным интерфейсом, к которому нет удаленного доступа; иначе false.
  • scopeid <number> Числовой идентификатор области действия IPv6 (указывается только в том случае, если family - IPv6)
  • cidr <string> Назначенный IPv4 или IPv6 адрес с префиксом маршрутизации в нотации CIDR. Если netmask недействительна, это свойство устанавливается в null.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{
  lo: [
    {
      address: '127.0.0.1',
      netmask: '255.0.0.0',
      family: 'IPv4',
      mac: '00:00:00:00:00:00',
      internal: true,
      cidr: '127.0.0.1/8'
    },
    {
      address: '::1',
      netmask: 'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
      family: 'IPv6',
      mac: '00:00:00:00:00:00',
      scopeid: 0,
      internal: true,
      cidr: '::1/128'
    }
  ],
  eth0: [
    {
      address: '192.168.1.108',
      netmask: '255.255.255.0',
      family: 'IPv4',
      mac: '01:02:03:0a:0b:0c',
      internal: false,
      cidr: '192.168.1.108/24'
    },
    {
      address: 'fe80::a00:27ff:fe4e:66a1',
      netmask: 'ffff:ffff:ffff:ffff::',
      family: 'IPv6',
      mac: '01:02:03:0a:0b:0c',
      scopeid: 1,
      internal: false,
      cidr: 'fe80::a00:27ff:fe4e:66a1/64'
    }
  ]
}

os.platform()

Возвращает строку, идентифицирующую платформу операционной системы, для которой был скомпилирован двоичный файл Node.js. Значение устанавливается во время компиляции. Возможные значения: 'aix', 'darwin', 'freebsd', 'linux', 'openbsd', 'sunos', и 'win32'.

Возвращаемое значение эквивалентно process.platform.

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

os.release()

Возвращает операционную систему в виде строки.

В POSIX системах выпуск операционной системы определяется вызовом uname(3). В Windows используется GetVersionExW(). Дополнительную информацию см. на https://en.wikipedia.org/wiki/Uname#Examples.

os.setPriority([pid, ]priority)

  • pid <integer> Идентификатор процесса, для которого нужно установить приоритет планирования. По умолчанию: 0.
  • priority <integer> Приоритет планирования, который нужно назначить процессу.

Пытается установить приоритет планирования для процесса, указанного pid. Если pid не указан или равен 0, используется идентификатор текущего процесса.

Входное значение priority должно быть целым числом между -20 (высокий приоритет) и 19 (низкий приоритет). Из-за различий между уровнями приоритетов Unix и классами приоритетов Windows, priority отображается на одну из шести констант приоритетов в os.constants.priority. При извлечении уровня приоритета процесса это сопоставление диапазонов может привести к тому, что возвращаемое значение будет немного отличаться в Windows. Чтобы избежать путаницы, установите priority в одну из констант приоритета.

В Windows установка приоритета в PRIORITY_HIGHEST требует повышенных привилегий пользователя. В противном случае установленный приоритет будет молча снижен до PRIORITY_HIGH.

os.tmpdir()

Возвращает каталог по умолчанию операционной системы для временных файлов в виде строки.

os.totalmem()

Возвращает общий объем системной памяти в байтах в виде целого числа.

os.type()

Возвращает имя операционной системы, полученное с помощью uname(3). Например, возвращается 'Linux' в Linux, 'Darwin' в macOS и 'Windows_NT' в Windows.

Дополнительную информацию о результатах выполнения uname(3) в различных операционных системах см. в https://en.wikipedia.org/wiki/Uname#Examples.

os.uptime()

Возвращает время работы системы в количестве секунд.

os.userInfo([options])

  • options <Object>
    • encoding <string> Кодировка символов, используемая для интерпретации результирующих строк. Если encoding имеет значение 'buffer', значения username, hell и homedir будут экземплярами Buffer. По умолчанию: 'utf8'.
  • Возвращает: <Object>

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

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

Выбрасывает SystemError, если у пользователя нет имени пользователя или homedir.

os.version()

  • Возвращает {строку}

Возвращает строку, идентифицирующую версию ядра.

В POSIX системах выпуск операционной системы определяется вызовом uname(3). В Windows используется RtlGetVersion(), а если она недоступна, то используется GetVersionExW(). Дополнительную информацию см. в https://en.wikipedia.org/wiki/Uname#Examples.

Константы ОС

Следующие константы экспортируются в os.constants.

Не все константы будут доступны в каждой операционной системе.

Signal constants

The following signal constants are exported by os.constants.signals.

Constant Description
SIGHUP Sent to indicate when a controlling terminal is closed or a parent process exits.
SIGINT Sent to indicate when a user wishes to interrupt a process (Ctrl+C).
SIGQUIT Sent to indicate when a user wishes to terminate a process and perform a core dump.
SIGILL Sent to a process to notify that it has attempted to perform an illegal, malformed, unknown, or privileged instruction.
SIGTRAP Sent to a process when an exception has occurred.
SIGABRT Sent to a process to request that it abort.
SIGIOT Synonym for SIGABRT
SIGBUS Sent to a process to notify that it has caused a bus error.
SIGFPE Sent to a process to notify that it has performed an illegal arithmetic operation.
SIGKILL Sent to a process to terminate it immediately.
SIGUSR1 SIGUSR2 Sent to a process to identify user-defined conditions.
SIGSEGV Sent to a process to notify of a segmentation fault.
SIGPIPE Sent to a process when it has attempted to write to a disconnected pipe.
SIGALRM Sent to a process when a system timer elapses.
SIGTERM Sent to a process to request termination.
SIGCHLD Sent to a process when a child process terminates.
SIGSTKFLT Sent to a process to indicate a stack fault on a coprocessor.
SIGCONT Sent to instruct the operating system to continue a paused process.
SIGSTOP Sent to instruct the operating system to halt a process.
SIGTSTP Sent to a process to request it to stop.
SIGBREAK Sent to indicate when a user wishes to interrupt a process.
SIGTTIN Sent to a process when it reads from the TTY while in the background.
SIGTTOU Sent to a process when it writes to the TTY while in the background.
SIGURG Sent to a process when a socket has urgent data to read.
SIGXCPU Sent to a process when it has exceeded its limit on CPU usage.
SIGXFSZ Sent to a process when it grows a file larger than the maximum allowed.
SIGVTALRM Sent to a process when a virtual timer has elapsed.
SIGPROF Sent to a process when a system timer has elapsed.
SIGWINCH Sent to a process when the controlling terminal has changed its size.
SIGIO Sent to a process when I/O is available.
SIGPOLL Synonym for SIGIO
SIGLOST Sent to a process when a file lock has been lost.
SIGPWR Sent to a process to notify of a power failure.
SIGINFO Synonym for SIGPWR
SIGSYS Sent to a process to notify of a bad argument.
SIGUNUSED Synonym for SIGSYS

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

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

POSIX error constants

Constant Description
E2BIG Indicates that the list of arguments is longer than expected.
EACCES Indicates that the operation did not have sufficient permissions.
EADDRINUSE Indicates that the network address is already in use.
EADDRNOTAVAIL Indicates that the network address is currently unavailable for use.
EAFNOSUPPORT Indicates that the network address family is not supported.
EAGAIN Indicates that there is no data available and to try the operation again later.
EALREADY Indicates that the socket already has a pending connection in progress.
EBADF Indicates that a file descriptor is not valid.
EBADMSG Indicates an invalid data message.
EBUSY Indicates that a device or resource is busy.
ECANCELED Indicates that an operation was canceled.
ECHILD Indicates that there are no child processes.
ECONNABORTED Indicates that the network connection has been aborted.
ECONNREFUSED Indicates that the network connection has been refused.
ECONNRESET Indicates that the network connection has been reset.
EDEADLK Indicates that a resource deadlock has been avoided.
EDESTADDRREQ Indicates that a destination address is required.
EDOM Indicates that an argument is out of the domain of the function.
EDQUOT Indicates that the disk quota has been exceeded.
EEXIST Indicates that the file already exists.
EFAULT Indicates an invalid pointer address.
EFBIG Indicates that the file is too large.
EHOSTUNREACH Indicates that the host is unreachable.
EIDRM Indicates that the identifier has been removed.
EILSEQ Indicates an illegal byte sequence.
EINPROGRESS Indicates that an operation is already in progress.
EINTR Indicates that a function call was interrupted.
EINVAL Indicates that an invalid argument was provided.
EIO Indicates an otherwise unspecified I/O error.
EISCONN Indicates that the socket is connected.
EISDIR Indicates that the path is a directory.
ELOOP Indicates too many levels of symbolic links in a path.
EMFILE Indicates that there are too many open files.
EMLINK Indicates that there are too many hard links to a file.
EMSGSIZE Indicates that the provided message is too long.
EMULTIHOP Indicates that a multihop was attempted.
ENAMETOOLONG Indicates that the filename is too long.
ENETDOWN Indicates that the network is down.
ENETRESET Indicates that the connection has been aborted by the network.
ENETUNREACH Indicates that the network is unreachable.
ENFILE Indicates too many open files in the system.
ENOBUFS Indicates that no buffer space is available.
ENODATA Indicates that no message is available on the stream head read queue.
ENODEV Indicates that there is no such device.
ENOENT Indicates that there is no such file or directory.
ENOEXEC Indicates an exec format error.
ENOLCK Indicates that there are no locks available.
ENOLINK Indications that a link has been severed.
ENOMEM Indicates that there is not enough space.
ENOMSG Indicates that there is no message of the desired type.
ENOPROTOOPT Indicates that a given protocol is not available.
ENOSPC Indicates that there is no space available on the device.
ENOSR Indicates that there are no stream resources available.
ENOSTR Indicates that a given resource is not a stream.
ENOSYS Indicates that a function has not been implemented.
ENOTCONN Indicates that the socket is not connected.
ENOTDIR Indicates that the path is not a directory.
ENOTEMPTY Indicates that the directory is not empty.
ENOTSOCK Indicates that the given item is not a socket.
ENOTSUP Indicates that a given operation is not supported.
ENOTTY Indicates an inappropriate I/O control operation.
ENXIO Indicates no such device or address.
EOPNOTSUPP Indicates that an operation is not supported on the socket. Although ENOTSUP and EOPNOTSUPP have the same value on Linux, according to POSIX.1 these error values should be distinct.)
EOVERFLOW Indicates that a value is too large to be stored in a given data type.
EPERM Indicates that the operation is not permitted.
EPIPE Indicates a broken pipe.
EPROTO Indicates a protocol error.
EPROTONOSUPPORT Indicates that a protocol is not supported.
EPROTOTYPE Indicates the wrong type of protocol for a socket.
ERANGE Indicates that the results are too large.
EROFS Indicates that the file system is read only.
ESPIPE Indicates an invalid seek operation.
ESRCH Indicates that there is no such process.
ESTALE Indicates that the file handle is stale.
ETIME Indicates an expired timer.
ETIMEDOUT Indicates that the connection timed out.
ETXTBSY Indicates that a text file is busy.
EWOULDBLOCK Indicates that the operation would block.
EXDEV Indicates an improper link.

Windows-specific error constants

The following error codes are specific to the Windows operating system.

Constant Description
WSAEINTR Indicates an interrupted function call.
WSAEBADF Indicates an invalid file handle.
WSAEACCES Indicates insufficient permissions to complete the operation.
WSAEFAULT Indicates an invalid pointer address.
WSAEINVAL Indicates that an invalid argument was passed.
WSAEMFILE Indicates that there are too many open files.
WSAEWOULDBLOCK Indicates that a resource is temporarily unavailable.
WSAEINPROGRESS Indicates that an operation is currently in progress.
WSAEALREADY Indicates that an operation is already in progress.
WSAENOTSOCK Indicates that the resource is not a socket.
WSAEDESTADDRREQ Indicates that a destination address is required.
WSAEMSGSIZE Indicates that the message size is too long.
WSAEPROTOTYPE Indicates the wrong protocol type for the socket.
WSAENOPROTOOPT Indicates a bad protocol option.
WSAEPROTONOSUPPORT Indicates that the protocol is not supported.
WSAESOCKTNOSUPPORT Indicates that the socket type is not supported.
WSAEOPNOTSUPP Indicates that the operation is not supported.
WSAEPFNOSUPPORT Indicates that the protocol family is not supported.
WSAEAFNOSUPPORT Indicates that the address family is not supported.
WSAEADDRINUSE Indicates that the network address is already in use.
WSAEADDRNOTAVAIL Indicates that the network address is not available.
WSAENETDOWN Indicates that the network is down.
WSAENETUNREACH Indicates that the network is unreachable.
WSAENETRESET Indicates that the network connection has been reset.
WSAECONNABORTED Indicates that the connection has been aborted.
WSAECONNRESET Indicates that the connection has been reset by the peer.
WSAENOBUFS Indicates that there is no buffer space available.
WSAEISCONN Indicates that the socket is already connected.
WSAENOTCONN Indicates that the socket is not connected.
WSAESHUTDOWN Indicates that data cannot be sent after the socket has been shutdown.
WSAETOOMANYREFS Indicates that there are too many references.
WSAETIMEDOUT Indicates that the connection has timed out.
WSAECONNREFUSED Indicates that the connection has been refused.
WSAELOOP Indicates that a name cannot be translated.
WSAENAMETOOLONG Indicates that a name was too long.
WSAEHOSTDOWN Indicates that a network host is down.
WSAEHOSTUNREACH Indicates that there is no route to a network host.
WSAENOTEMPTY Indicates that the directory is not empty.
WSAEPROCLIM Indicates that there are too many processes.
WSAEUSERS Indicates that the user quota has been exceeded.
WSAEDQUOT Indicates that the disk quota has been exceeded.
WSAESTALE Indicates a stale file handle reference.
WSAEREMOTE Indicates that the item is remote.
WSASYSNOTREADY Indicates that the network subsystem is not ready.
WSAVERNOTSUPPORTED Indicates that the winsock.dll version is out of range.
WSANOTINITIALISED Indicates that successful WSAStartup has not yet been performed.
WSAEDISCON Indicates that a graceful shutdown is in progress.
WSAENOMORE Indicates that there are no more results.
WSAECANCELLED Indicates that an operation has been canceled.
WSAEINVALIDPROCTABLE Indicates that the procedure call table is invalid.
WSAEINVALIDPROVIDER Indicates an invalid service provider.
WSAEPROVIDERFAILEDINIT Indicates that the service provider failed to initialized.
WSASYSCALLFAILURE Indicates a system call failure.
WSASERVICE_NOT_FOUND Indicates that a service was not found.
WSATYPE_NOT_FOUND Indicates that a class type was not found.
WSA_E_NO_MORE Indicates that there are no more results.
WSA_E_CANCELLED Indicates that the call was canceled.
WSAEREFUSED Indicates that a database query was refused.

константы dlopen

Если они доступны в операционной системе, следующие константы экспортируются в os.constants.dlopen. Подробную информацию см. в разделе dlopen(3).

Constant Description
RTLD_LAZY Perform lazy binding. Node.js sets this flag by default.
RTLD_NOW Resolve all undefined symbols in the library before dlopen(3) returns.
RTLD_GLOBAL Symbols defined by the library will be made available for symbol resolution of subsequently loaded libraries.
RTLD_LOCAL The converse of RTLD_GLOBAL. This is the default behavior if neither flag is specified.
RTLD_DEEPBIND Make a self-contained library use its own symbols in preference to symbols from previously loaded libraries.

Константы приоритетов

Следующие константы планирования процессов экспортируются os.constants.priority.

Constant Description
PRIORITY_LOW The lowest process scheduling priority. This corresponds to IDLE_PRIORITY_CLASS on Windows, and a nice value of 19 on all other platforms.
PRIORITY_BELOW_NORMAL The process scheduling priority above PRIORITY_LOW and below PRIORITY_NORMAL. This corresponds to BELOW_NORMAL_PRIORITY_CLASS on Windows, and a nice value of 10 on all other platforms.
PRIORITY_NORMAL The default process scheduling priority. This corresponds to NORMAL_PRIORITY_CLASS on Windows, and a nice value of 0 on all other platforms.
PRIORITY_ABOVE_NORMAL The process scheduling priority above PRIORITY_NORMAL and below PRIORITY_HIGH. This corresponds to ABOVE_NORMAL_PRIORITY_CLASS on Windows, and a nice value of -7 on all other platforms.
PRIORITY_HIGH The process scheduling priority above PRIORITY_ABOVE_NORMAL and below PRIORITY_HIGHEST. This corresponds to HIGH_PRIORITY_CLASS on Windows, and a nice value of -14 on all other platforms.
PRIORITY_HIGHEST The highest process scheduling priority. This corresponds to REALTIME_PRIORITY_CLASS on Windows, and a nice value of -20 on all other platforms.

libuv constants

Constant Description
UV_UDP_REUSEADDR