"Để xây dựng ứng dụng thông minh, đôi khi bạn cần biết nó đang chạy trên hệ điều hành nào, có bao nhiêu CPU, bao nhiêu RAM và thư mục Home ở đâu. Module
osgiúp Node.js làm được điều đó."
🎯 Mục tiêu bài học
Sau bài này bạn sẽ:
Hiểu module os là gì.
Lấy thông tin hệ điều hành.
Kiểm tra CPU, RAM và kiến trúc máy.
Biết thư mục Home, Temp.
Phân biệt các hàm thường dùng trong module
os.Ứng dụng
ostrong các dự án thực tế.
Module os là gì?
os (Operating System) là module có sẵn của Node.js.
Không cần cài đặt.
Import:
import os from "node:os";
Hoặc
import {
cpus,
totalmem
} from "node:os";
os.platform()
Cho biết hệ điều hành đang chạy.
import os from "node:os";
console.log(
os.platform()
);
Ví dụ
Windows
win32
Linux
linux
macOS
darwin
Lưu ý: Giá trị
win32vẫn được sử dụng cho Windows 64-bit để đảm bảo tính tương thích ngược.
os.arch()
Kiến trúc CPU.
import os from "node:os";
console.log(
os.arch()
);
Ví dụ
x64
Hoặc
arm64
os.hostname()
Tên máy tính.
console.log(
os.hostname()
);
Ví dụ
DESKTOP-ABC123
os.type()
Loại hệ điều hành.
console.log(
os.type()
);
Ví dụ
Windows
Windows_NT
Linux
Linux
macOS
Darwin
os.release()
Phiên bản hệ điều hành.
console.log(
os.release()
);
Ví dụ
10.0.26100
os.version()
Thông tin phiên bản chi tiết hơn.
console.log(
os.version()
);
Ví dụ
Windows 11 Pro
(Chuỗi trả về phụ thuộc vào hệ điều hành.)
os.cpus()
Thông tin CPU.
import os from "node:os";
console.log(
os.cpus()
);
Ví dụ
[
{
model: "...",
speed: 3200
}
]
Đếm số lõi CPU
console.log(
os.cpus().length
);
Ví dụ
8
os.availableParallelism()
Đây là cách hiện đại để biết số luồng xử lý khả dụng.
console.log(
os.availableParallelism()
);
Ví dụ
8
Trong các phiên bản Node.js mới,
os.availableParallelism()được khuyến nghị thay cho việc dùngos.cpus().lengthkhi cần xác định mức độ song song phù hợp.
os.totalmem()
Dung lượng RAM.
console.log(
os.totalmem()
);
Ví dụ
17071734784
Đổi sang GB
const ram =
os.totalmem() /
1024 /
1024 /
1024;
console.log(
ram.toFixed(2)
);
↓
15.90 GB
os.freemem()
RAM còn trống.
console.log(
os.freemem()
);
Ví dụ
8478232576
os.homedir()
Thư mục Home.
console.log(
os.homedir()
);
Windows
C:\Users\Admin
Linux
/home/admin
os.tmpdir()
Thư mục tạm.
console.log(
os.tmpdir()
);
Ví dụ
Windows
C:\Users\Admin\AppData\Local\Temp
os.uptime()
Thời gian máy đã hoạt động.
console.log(
os.uptime()
);
↓
86400
Nghĩa là
86400 giây
Đổi sang giờ
const hours =
os.uptime() /
60 /
60;
console.log(
hours.toFixed(1)
);
↓
24.0 giờ
os.userInfo()
Thông tin người dùng.
console.log(
os.userInfo()
);
Ví dụ
{
username:'admin',
shell:'cmd'
}
os.networkInterfaces()
Thông tin mạng.
console.log(
os.networkInterfaces()
);
Ví dụ
Ethernet
Wi-Fi
IPv4
IPv6
Thông tin này thường được dùng trong các công cụ quản trị hoặc chẩn đoán hệ thống.
os.EOL
Ký tự xuống dòng của hệ điều hành.
console.log(
os.EOL
);
Windows
\r\n
Linux/macOS
\n
Ví dụ
import fs from "node:fs";
import os from "node:os";
fs.writeFileSync(
"log.txt",
"Dong 1" +
os.EOL +
"Dong 2"
);
Ví dụ thực tế
Hiển thị thông tin hệ thống
import os from "node:os";
console.log("Platform:", os.platform());
console.log("CPU:", os.availableParallelism());
console.log(
"RAM:",
(
os.totalmem()/1024/1024/1024
).toFixed(2),
"GB"
);
Kết quả
Platform: win32
CPU: 8
RAM: 15.90 GB
Khi nào dùng module os?
Rất hữu ích trong:
Kiểm tra môi trường chạy.
Hiển thị thông tin máy chủ.
Công cụ CLI.
Dashboard quản trị.
Monitoring.
Docker.
VPS.
DevOps.
Những lỗi thường gặp
Nhầm platform()
if(os.platform()=="windows")
Sai.
Đúng là
if(os.platform()=="win32")
Không đổi đơn vị RAM
console.log(
os.totalmem()
);
Kết quả
17071734784
Đây là byte, không phải GB.
Dùng cpus().length để tính hiệu năng
os.cpus().length cho biết số lõi logic, nhưng không phản ánh đầy đủ khả năng xử lý của hệ thống. Trong các ứng dụng hiện đại, nên ưu tiên os.availableParallelism() khi cần xác định số luồng làm việc phù hợp.
Bảng tổng hợp các hàm thường dùng
| Hàm | Ý nghĩa |
|---|---|
platform() | Hệ điều hành |
arch() | Kiến trúc CPU |
hostname() | Tên máy |
type() | Loại hệ điều hành |
release() | Phiên bản kernel/HĐH |
version() | Phiên bản chi tiết |
cpus() | Thông tin CPU |
availableParallelism() | Số luồng xử lý khả dụng |
totalmem() | Tổng RAM |
freemem() | RAM còn trống |
homedir() | Thư mục Home |
tmpdir() | Thư mục Temp |
uptime() | Thời gian hoạt động |
userInfo() | Người dùng hiện tại |
networkInterfaces() | Thông tin mạng |
EOL | Ký tự xuống dòng |
Tổng kết
Module os giúp Node.js truy cập thông tin về hệ điều hành và phần cứng của máy đang chạy ứng dụng. Với các API như platform(), availableParallelism(), totalmem() hay homedir(), bạn có thể xây dựng các chương trình thích ứng với nhiều môi trường khác nhau, đồng thời hỗ trợ giám sát và quản trị hệ thống hiệu quả.
Đây là một module nền tảng thường được sử dụng trong các công cụ CLI, ứng dụng máy chủ, Docker, VPS và các hệ thống giám sát.
Bài tiếp theo
👉 Bài 09 — Events
Bạn sẽ học:
Event là gì.
EventEmitter.on(),once(),emit().Truyền dữ liệu qua sự kiện.
Xây dựng hệ thống xử lý sự kiện theo mô hình Publisher–Subscriber (Pub/Sub) trong Node.js.




Không có nhận xét nào:
Đăng nhận xét