Пошук уроків, статей та іншого контенту
Отримаєте відомості про операційну систему, процесор, пам’ять, мережеві інтерфейси та домашні каталоги через os.
osВбудований модуль os надає інформацію про операційну систему та середовище, у якому працює Node.js.
Він не потребує встановлення:
const os = require('node:os');Модуль дає змогу отримати дані про:
тип і версію операційної системи;
кількість ядер;
обсяг оперативної пам’яті;
мережеві інтерфейси;
домашній каталог користувача;
тимчасовий каталог;
час роботи системи.
Метод os.platform() повертає ідентифікатор платформи:
const os = require('node:os');
console.log(os.platform());Приклади результатів:
win32 — Windows;
linux — Linux;
darwin — macOS.
Метод os.type() повертає назву операційної системи:
console.log(os.type());Наприклад:
LinuxМетод os.release() повертає версію ядра або системного випуску:
console.log(os.release());Результат залежить від операційної системи, на якій запущено програму.
Метод os.arch() повертає архітектуру процесора, яку використовує Node.js:
console.log(os.arch());Типові значення:
x64 — 64-бітна архітектура;
arm64 — 64-бітна ARM-архітектура;
ia32 — 32-бітна архітектура.
Метод os.hostname() повертає ім’я комп’ютера або сервера:
console.log(os.hostname());Це значення може бути корисним для діагностики або формування системних логів.
Метод os.cpus() повертає масив із даними про логічні процесори системи:
const os = require('node:os');
const processors = os.cpus();
console.log(processors);
console.log(`Кількість логічних процесорів: ${processors.length}`);Кожен елемент масиву містить, зокрема:
модель процесора;
його швидкість;
статистику використання часу процесора.
Щоб отримати модель першого процесора:
const os = require('node:os');
const processors = os.cpus();
console.log(`Модель: ${processors[0].model}`);
console.log(`Швидкість: ${processors[0].speed} МГц`);Кількість елементів у масиві os.cpus() — це кількість логічних процесорів, а не обов’язково фізичних ядер.
Метод os.totalmem() повертає загальний обсяг оперативної пам’яті в байтах.
Метод os.freemem() повертає обсяг вільної оперативної пам’яті також у байтах:
const os = require('node:os');
const totalMemory = os.totalmem();
const freeMemory = os.freemem();
console.log(`Усього: ${totalMemory} байт`);
console.log(`Вільно: ${freeMemory} байт`);Для зручного відображення байти можна перетворити на гігабайти:
const os = require('node:os');
const bytesInGigabyte = 1024 ** 3;
const totalMemory = os.totalmem() / bytesInGigabyte;
const freeMemory = os.freemem() / bytesInGigabyte;
console.log(`Усього пам’яті: ${totalMemory.toFixed(2)} ГБ`);
console.log(`Вільно пам’яті: ${freeMemory.toFixed(2)} ГБ`);Метод toFixed(2) залишає два знаки після десяткової крапки.
Метод os.homedir() повертає домашній каталог поточного користувача:
const os = require('node:os');
console.log(os.homedir());Приклади результатів:
/home/userабо:
C:\Users\UserМетод os.tmpdir() повертає каталог для тимчасових файлів:
console.log(os.tmpdir());Шляхи залежать від операційної системи. Тому не варто вручну припускати, що домашній каталог завжди має однаковий формат.
Метод os.networkInterfaces() повертає об’єкт із мережевими інтерфейсами комп’ютера.
const os = require('node:os');
const interfaces = os.networkInterfaces();
console.log(interfaces);Інтерфейс може містити кілька адрес. Наприклад, один мережевий адаптер може мати адресу IPv4 і адресу IPv6.
Щоб вивести адреси всіх інтерфейсів:
const os = require('node:os');
const interfaces = os.networkInterfaces();
for (const [name, addresses] of Object.entries(interfaces)) {
console.log(`Інтерфейс: ${name}`);
for (const address of addresses ?? []) {
console.log(` Адреса: ${address.address}`);
console.log(` Сімейство: ${address.family}`);
console.log(` Внутрішня: ${address.internal}`);
}
}Властивість internal має значення true для внутрішніх адрес, наприклад адреси локального комп’ютера 127.0.0.1.
У деяких версіях Node.js значенням addresses може бути undefined, тому в прикладі використано:
addresses ?? []Цей вираз замінює null або undefined на порожній масив.
Метод os.uptime() повертає кількість секунд від моменту запуску операційної системи:
const os = require('node:os');
const uptimeInSeconds = os.uptime();
const uptimeInHours = uptimeInSeconds / 60 / 60;
console.log(`Система працює ${uptimeInHours.toFixed(2)} год.`);Це не час роботи поточного Node.js-процесу, а час роботи всієї операційної системи.
Створимо файл system-info.js, який виведе короткий звіт про систему.
const os = require('node:os');
const bytesInGigabyte = 1024 ** 3;
const totalMemory = os.totalmem() / bytesInGigabyte;
const freeMemory = os.freemem() / bytesInGigabyte;
const processors = os.cpus();
console.log('Інформація про систему');
console.log('----------------------');
console.log(`Операційна система: ${os.type()}`);
console.log(`Платформа: ${os.platform()}`);
console.log(`Версія: ${os.release()}`);
console.log(`Архітектура: ${os.arch()}`);
console.log(`Ім’я комп’ютера: ${os.hostname()}`);
console.log(`Процесор: ${processors[0]?.model ?? 'невідомо'}`);
console.log(`Логічних процесорів: ${processors.length}`);
console.log(`Усього пам’яті: ${totalMemory.toFixed(2)} ГБ`);
console.log(`Вільно пам’яті: ${freeMemory.toFixed(2)} ГБ`);
console.log(`Домашній каталог: ${os.homedir()}`);
console.log(`Тимчасовий каталог: ${os.tmpdir()}`);
console.log(`Час роботи системи: ${Math.floor(os.uptime())} секунд`);
console.log('\nМережеві інтерфейси:');
const interfaces = os.networkInterfaces();
for (const [name, addresses] of Object.entries(interfaces)) {
for (const address of addresses ?? []) {
console.log(`- ${name}: ${address.address} (${address.family})`);
}
}Запустіть програму командою:
node system-info.jsПрограма використовує лише вбудований модуль Node.js, тому додаткові пакети не потрібні.
os.totalmem() і os.freemem() повертають байти, а не мегабайти чи гігабайти.
Неправильно:
console.log(`${os.totalmem()} ГБ`);У такому випадку число байтів помилково підписане як гігабайти. Спочатку потрібно виконати перетворення:
const gigabytes = os.totalmem() / 1024 ** 3;
console.log(`${gigabytes.toFixed(2)} ГБ`);Не слід припускати, що інтерфейс із конкретним ім’ям завжди існує. Його назва залежить від операційної системи та конфігурації комп’ютера.
Надійніше перебирати результат os.networkInterfaces():
const os = require('node:os');
for (const [name, addresses] of Object.entries(os.networkInterfaces())) {
console.log(name, addresses);
}os.uptime() і часом роботи процесуos.uptime() показує час роботи операційної системи. Він не повідомляє, скільки працює конкретна Node.js-програма.
Шляхи Windows і Unix-подібних систем мають різний формат. Для отримання системних каталогів використовуйте os.homedir() та os.tmpdir(), а не створюйте такі шляхи вручну.
require('node:os') підключає вбудований модуль для роботи з інформацією про операційну систему.
os.platform(), os.type() і os.release() повертають дані про операційну систему.
os.arch() повідомляє архітектуру процесора.
os.cpus() повертає дані про логічні процесори.
os.totalmem() і os.freemem() повертають обсяг пам’яті в байтах.
os.networkInterfaces() повертає мережеві інтерфейси та їхні адреси.
os.homedir() і os.tmpdir() повертають системні каталоги.
os.uptime() показує час роботи операційної системи в секундах.