Node.js os モジュール
Node.js のosモジュールは組み込みのコアモジュールであり、オペレーティングシステムに関連する便利なメソッドとプロパティを提供します。このモジュールを通じて、現在 Node.js が実行されているオペレーティングシステムに関するさまざまな情報(CPU アーキテクチャ、メモリ使用状況、ネットワークインターフェースなど)を取得できます。
なぜ os モジュールが必要なのか
アプリケーションを開発する際、異なるオペレーティングシステム環境に応じて異なる操作を実行したり、システムのリソース使用状況を監視する必要がある場合があります。osモジュールはこのような機能を提供し、これらのシステム情報を簡単に取得できるようにします。
os モジュールの使用方法
使用するにはosモジュールを最初にインポートする必要があります:
const os = require('os');
一般的なメソッドの紹介
1. オペレーティングシステム情報の取得
例
console.log(os.platform()); // オペレーティングシステムのプラットフォームを返します。例:'darwin', 'win32', 'linux'
console.log(os.type()); // オペレーティングシステムの名前を返します。例:'Linux', 'Darwin', 'Windows_NT'
console.log(os.arch()); // CPU アーキテクチャを返します。例:'x64', 'arm'
console.log(os.release()); // オペレーティングシステムのバージョンを返します
console.log(os.type()); // オペレーティングシステムの名前を返します。例:'Linux', 'Darwin', 'Windows_NT'
console.log(os.arch()); // CPU アーキテクチャを返します。例:'x64', 'arm'
console.log(os.release()); // オペレーティングシステムのバージョンを返します
2. メモリ情報の取得
例
console.log(os.totalmem()); // システムの総メモリを返します(バイト)
console.log(os.freemem()); // システムの利用可能なメモリを返します(バイト)
// MB に変換して表示
console.log(`総メモリ: ${os.totalmem() / 1024 / 1024} MB`);
console.log(`利用可能なメモリ: ${os.freemem() / 1024 / 1024} MB`);
console.log(os.freemem()); // システムの利用可能なメモリを返します(バイト)
// MB に変換して表示
console.log(`総メモリ: ${os.totalmem() / 1024 / 1024} MB`);
console.log(`利用可能なメモリ: ${os.freemem() / 1024 / 1024} MB`);
3. CPU 情報の取得
例
console.log(os.cpus()); // 各 CPU/コアの情報を含むオブジェクトの配列を返します
console.log(os.loadavg()); // 1、5、15 分間の平均負荷を返します(Linux/Unix のみ)
// CPU コア数を取得
console.log(`CPU コア数: ${os.cpus().length}`);
console.log(os.loadavg()); // 1、5、15 分間の平均負荷を返します(Linux/Unix のみ)
// CPU コア数を取得
console.log(`CPU コア数: ${os.cpus().length}`);
4. ネットワークインターフェース情報の取得
例
console.log(os.networkInterfaces()); // ネットワークインターフェース情報を返します
5. ユーザー関連情報の取得
例
console.log(os.homedir()); // 現在のユーザーのホームディレクトリを返します
console.log(os.userInfo()); // 現在のユーザーの情報を返します
console.log(os.hostname()); // オペレーティングシステムのホスト名を返します
console.log(os.userInfo()); // 現在のユーザーの情報を返します
console.log(os.hostname()); // オペレーティングシステムのホスト名を返します
実際の応用例
例 1:システム監視ツール
例
const os = require('os');
function systemMonitor() {
console.log('=== システム監視 ===');
console.log(`オペレーティングシステム: ${os.type()} ${os.release()}`);
console.log(`CPU アーキテクチャ: ${os.arch()}`);
console.log(`CPU コア数: ${os.cpus().length}`);
console.log(`総メモリ: ${(os.totalmem() / 1024 / 1024).toFixed(2)} MB`);
console.log(`利用可能なメモリ: ${(os.freemem() / 1024 / 1024).toFixed(2)} MB`);
console.log(`システム稼働時間: ${(os.uptime() / 60 / 60).toFixed(2)}時間`);
}
systemMonitor();
function systemMonitor() {
console.log('=== システム監視 ===');
console.log(`オペレーティングシステム: ${os.type()} ${os.release()}`);
console.log(`CPU アーキテクチャ: ${os.arch()}`);
console.log(`CPU コア数: ${os.cpus().length}`);
console.log(`総メモリ: ${(os.totalmem() / 1024 / 1024).toFixed(2)} MB`);
console.log(`利用可能なメモリ: ${(os.freemem() / 1024 / 1024).toFixed(2)} MB`);
console.log(`システム稼働時間: ${(os.uptime() / 60 / 60).toFixed(2)}時間`);
}
systemMonitor();
例 2:ネットワーク IP アドレスの取得
例
const os = require('os');
function getLocalIP() {
const interfaces = os.networkInterfaces();
for (const interfaceName in interfaces) {
for (const iface of interfaces[interfaceName]) {
if (iface.family === 'IPv4' && !iface.internal) {
return iface.address;
}
}
}
return '127.0.0.1';
}
console.log(`ローカル IP アドレス: ${getLocalIP()}`);
function getLocalIP() {
const interfaces = os.networkInterfaces();
for (const interfaceName in interfaces) {
for (const iface of interfaces[interfaceName]) {
if (iface.family === 'IPv4' && !iface.internal) {
return iface.address;
}
}
}
return '127.0.0.1';
}
console.log(`ローカル IP アドレス: ${getLocalIP()}`);
注意事項
osモジュールが提供する情報は読み取り専用であり、システム設定の変更には使用できません。- オペレーティングシステムによって返される情報は異なる場合があります。特に Windows と Unix 系システムの間では異なります。
- 一部のメソッド(例:
loadavg())は Windows では利用できないか、異なる値を返す場合があります。 - メモリ情報はバイト単位で返されるため、通常はより読みやすい単位(MB や GB など)に変換する必要があります。
メソッド
| メソッド | 説明 | 例 |
|---|---|---|
os.arch() | オペレーティングシステムの CPU アーキテクチャを返します。 | console.log(os.arch()); // 输出:'x64' |
os.constants | オペレーティングシステム固有の定数(エラーコード、シグナルなど)を含むオブジェクトを返します。 | console.log(os.constants.signals); |
os.cpus() | 各オブジェクトが CPU コアの情報(モデル、速度、使用状況など)を含むオブジェクトの配列を返します。 | console.log(os.cpus()); |
os.endianness() | CPU のバイトオーダーを返します(BEはビッグエンディアンを表し、LEはリトルエンディアンを表します)。 | console.log(os.endianness()); // 输出:'LE' |
os.freemem() | システムの空きメモリ量(バイト単位)を返します。システムリソースの監視に使用できます。 | console.log(os.freemem()); |
os.homedir() | 現在のユーザーのホームディレクトリのパスを返します。 | console.log(os.homedir()); |
os.hostname() | ホスト名を返します。 | console.log(os.hostname()); |
os.loadavg() | 1、5、15 分間の平均負荷を含む配列を返します。Unix システムでのみ有効です。 | console.log(os.loadavg()); |
os.networkInterfaces() | 各ネットワークインターフェースのアドレス情報を含むオブジェクトを返します。例:IP 地址、MAC 地址。 | console.log(os.networkInterfaces()); |
os.platform() | オペレーティングシステムのプラットフォームを返します。例:'darwin'、'win32'、'linux'など。 | console.log(os.platform()); |
os.release() | オペレーティングシステムのリリースバージョンを返します。 | console.log(os.release()); |
os.tmpdir() | オペレーティングシステムのデフォルトの一時ファイルディレクトリのパスを返します。 | console.log(os.tmpdir()); |
os.totalmem() | システムの総メモリ量(バイト単位)を返します。 | console.log(os.totalmem()); |
os.type() | オペレーティングシステムの名前を返します。例:'Linux'、'Darwin'(macOS)、'Windows_NT'など。 | console.log(os.type()); |
os.uptime() | オペレーティングシステムの稼働時間を秒単位で返します。 | console.log(os.uptime()); |
os.userInfo([options]) | 現在のユーザーの詳細情報(ユーザー名、ホームディレクトリ、UID、GID など)を返します。options オブジェクトの構成をサポートし、文字エンコーディングを設定できます(デフォルトは'utf8')。 | console.log(os.userInfo()); |
プロパティ
| プロパティ | 説明 | 例 |
|---|---|---|
os.EOL | 現在のオペレーティングシステムの行末識別子を返します(\n 或 \r\n)。クロスプラットフォームのファイル読み書きを容易にします。 | console.log(os.EOL); // Windows 输出:'\r\n',Linux 输出:'\n' |
例
main.js ファイルを作成し、コードは次のとおりです:
例
const os = require('os');
// システムアーキテクチャを取得
console.log('システムアーキテクチャ:', os.arch());
// CPU 情報を取得
console.log('CPU 情報:', os.cpus());
// 空きメモリを取得
console.log('空きメモリ:', os.freemem());
// 総メモリを取得
console.log('総メモリ:', os.totalmem());
// ホームディレクトリを取得
console.log('ホームディレクトリ:', os.homedir());
// システムプラットフォームを取得
console.log('システムプラットフォーム:', os.platform());
// システム名を取得
console.log('システム名:', os.type());
// 平均負荷を取得(Unix システムのみ対応)
console.log('平均負荷:', os.loadavg());
// ネットワークインターフェース情報を取得
console.log('ネットワークインターフェース情報:', os.networkInterfaces());
// システムアーキテクチャを取得
console.log('システムアーキテクチャ:', os.arch());
// CPU 情報を取得
console.log('CPU 情報:', os.cpus());
// 空きメモリを取得
console.log('空きメモリ:', os.freemem());
// 総メモリを取得
console.log('総メモリ:', os.totalmem());
// ホームディレクトリを取得
console.log('ホームディレクトリ:', os.homedir());
// システムプラットフォームを取得
console.log('システムプラットフォーム:', os.platform());
// システム名を取得
console.log('システム名:', os.type());
// 平均負荷を取得(Unix システムのみ対応)
console.log('平均負荷:', os.loadavg());
// ネットワークインターフェース情報を取得
console.log('ネットワークインターフェース情報:', os.networkInterfaces());
コードの実行結果は次のようになります:
系统架构: arm64
CPU 信息: [
{
model: 'Apple M1',
speed: 24,
times: { user: 18515240, nice: 0, sys: 9460280, idle: 38401220, irq: 0 }
}
...
]
空闲内存: 167411712
总内存: 8589934592
主目录: /Users/サンプル
系统平台: darwin
系统名称: Darwin
平均负载: [ 11.4658203125, 4.49560546875, 3.35791015625 ]
网络接口信息: {
...
その他の拡張
Node.js 組み込みモジュール