В Node.js существует несколько способов получить информацию об операционной системе, где выполняется ваш код. Рассмотрим основные методы и их применение.
Node.js предоставляет встроенный модуль os
для работы с информацией об ОС:
const os = require('os');
// Основные методы:
console.log('Тип ОС:', os.type()); // 'Linux', 'Darwin' (macOS), 'Windows_NT'
console.log('Платформа:', os.platform()); // 'darwin', 'win32', 'linux'
console.log('Архитектура:', os.arch()); // 'x64', 'arm', 'ia32'
console.log('Версия ОС:', os.release()); // Версия ядра/ОС
console.log('Имя хоста:', os.hostname()); // Имя компьютера в сети
console.log('Время работы:', os.uptime() / 3600, 'часов'); // В секундах
console.log('Всего памяти:', os.totalmem() / 1024 / 1024, 'MB');
console.log('Свободно памяти:', os.freemem() / 1024 / 1024, 'MB');
console.log('Загрузка CPU:', os.loadavg()); // Массив с 1, 5 и 15-минутной нагрузкой
console.log('Количество CPU:', os.cpus().length); // Информация о каждом процессоре
console.log('Сетевые интерфейсы:', os.networkInterfaces());
console.log('Текущий пользователь:', os.userInfo());
/*
{
uid: 501,
gid: 20,
username: 'username',
homedir: '/Users/username',
shell: '/bin/zsh'
}
*/
console.log('Разделитель путей:', os.platform() === 'win32' ? ';' : ':');
console.log('Символ новой строки:', os.EOL); // \n на Unix, \r\n на Windows
Для более точного определения окружения можно комбинировать данные:
function getOSInfo() {
return {
type: os.type(),
platform: os.platform(),
arch: os.arch(),
release: os.release(),
totalMem: os.totalmem(),
freeMem: os.freemem(),
cpus: os.cpus().length,
uptime: os.uptime(),
user: os.userInfo().username,
homedir: os.userInfo().homedir
};
}
// При старте приложения
console.log('Запуск на:', os.type(), os.release());
console.log('Доступно памяти:', os.freemem() / 1024 / 1024, 'MB из', os.totalmem() / 1024 / 1024, 'MB');
// Определение оптимального количества потоков
const workerCount = Math.min(os.cpus().length, 4);
const configDir = os.platform() === 'win32'
? path.join(os.homedir(), 'AppData', 'Roaming', 'MyApp')
: path.join(os.homedir(), '.config', 'myapp');
Для более специфической информации можно использовать:
const { execSync } = require('child_process');
// Для Linux/Mac
const kernel = execSync('uname -a').toString().trim();
// Для Windows
const winVer = execSync('ver').toString().trim();
systeminformation
- более полная информацияgetos
- точное определение дистрибутива Linux В Node.js модуль os
предоставляет все необходимые методы для получения информации об операционной системе. Эти данные полезны для логирования, оптимизации работы приложения и создания кросс-платформенных решений. Для сложных сценариев можно комбинировать данные из os
с системными командами или специализированными npm-пакетами.