Node.js API详解之 os模块用法实例分析
本文实例讲述了Node.jsAPI详解之os模块用法。分享给大家供大家参考,具体如下:
os是Node的一个基础模块,提供了一些操作系统相关的属性接口。
通过constos=require('os');的方式引用os模块,我们接着看下os都有哪些功能
说明:
一个字符串常量,定义操作系统相关的行末标志:POSIX系统上值为\n,Windows下的值为\r\n
demo:
console.log('abc'+os.EOL+'123');
//abc
//123
os.arch()
说明:
该方法返回一个字符串,来说明当前运行环境的CPU架构,
可能的值有:'arm','arm64','ia32','mips','mipsel','ppc','ppc64','s390','s390x','x32','x64',和'x86'
demo:
console.log(os.arch()); //x64
os.constants
说明:
此常量是一个包含错误码,处理信号等系统常量的对象。具体描述可以查看:OS常量
demo:
console.log(os.constants);
//{UV_UDP_REUSEADDR:4,//libuv常量
//errno:
//{E2BIG:7,
//EACCES:13,
//EADDRINUSE:48,
//EADDRNOTAVAIL:49,
//EAFNOSUPPORT:47,
//EAGAIN:35,
//EALREADY:37,
//EBADF:9,
//EBADMSG:94,
//EBUSY:16,
//ECANCELED:89,
//ECHILD:10,
//ECONNABORTED:53,
//ECONNREFUSED:61,
//ECONNRESET:54,
//EDEADLK:11,
//EDESTADDRREQ:39,
//EDOM:33,
//EDQUOT:69,
//EEXIST:17,
//EFAULT:14,
//EFBIG:27,
//EHOSTUNREACH:65,
//EIDRM:90,
//EILSEQ:92,
//EINPROGRESS:36,
//EINTR:4,
//EINVAL:22,
//EIO:5,
//EISCONN:56,
//EISDIR:21,
//ELOOP:62,
//EMFILE:24,
//EMLINK:31,
//EMSGSIZE:40,
//EMULTIHOP:95,
//ENAMETOOLONG:63,
//ENETDOWN:50,
//ENETRESET:52,
//ENETUNREACH:51,
//ENFILE:23,
//ENOBUFS:55,
//ENODATA:96,
//ENODEV:19,
//ENOENT:2,
//ENOEXEC:8,
//ENOLCK:77,
//ENOLINK:97,
//ENOMEM:12,
//ENOMSG:91,
//ENOPROTOOPT:42,
//ENOSPC:28,
//ENOSR:98,
//ENOSTR:99,
//ENOSYS:78,
//ENOTCONN:57,
//ENOTDIR:20,
//ENOTEMPTY:66,
//ENOTSOCK:38,
//ENOTSUP:45,
//ENOTTY:25,
//ENXIO:6,
//EOPNOTSUPP:102,
//EOVERFLOW:84,
//EPERM:1,
//EPIPE:32,
//EPROTO:100,
//EPROTONOSUPPORT:43,
//EPROTOTYPE:41,
//ERANGE:34,
//EROFS:30,
//ESPIPE:29,
//ESRCH:3,
//ESTALE:70,
//ETIME:101,
//ETIMEDOUT:60,
//ETXTBSY:26,
//EWOULDBLOCK:35,
//EXDEV:18},
//signals:
//{SIGHUP:1,
//SIGINT:2,
//SIGQUIT:3,
//SIGILL:4,
//SIGTRAP:5,
//SIGABRT:6,
//SIGIOT:6,
//SIGBUS:10,
//SIGFPE:8,
//SIGKILL:9,
//SIGUSR1:30,
//SIGSEGV:11,
//SIGUSR2:31,
//SIGPIPE:13,
//SIGALRM:14,
//SIGTERM:15,
//SIGCHLD:20,
//SIGCONT:19,
//SIGSTOP:17,
//SIGTSTP:18,
//SIGTTIN:21,
//SIGTTOU:22,
//SIGURG:16,
//SIGXCPU:24,
//SIGXFSZ:25,
//SIGVTALRM:26,
//SIGPROF:27,
//SIGWINCH:28,
//SIGIO:23,
//SIGINFO:29,
//SIGSYS:12
//}
//}
os.cpus()
说明:
该方法返回一个对象数组,包含每个逻辑CPU内核的信息。
demo:
console.log(os.cpus());
//[{model:'Intel(R)Core(TM)i5-5287UCPU@2.90GHz',
//speed:2900,
//times:{
//user:96756760,//CPU花费在用户模式下的毫秒时间数
//nice:0,//CPU花费在良好模式下的毫秒时间数
//sys:80507720,//CPU花费在系统模式下的毫秒时间数
//idle:606147830,//CPU花费在空闲模式下的毫秒时间数
//irq:0//CPU花费在中断请求模式下的毫秒时间数
//}
//},
//{model:'Intel(R)Core(TM)i5-5287UCPU@2.90GHz',
//speed:2900,
//times:{user:43796970,nice:0,sys:37796280,idle:701811920,irq:0}
//},
//{model:'Intel(R)Core(TM)i5-5287UCPU@2.90GHz',
//speed:2900,
//times:{user:94060830,nice:0,sys:68641950,idle:620702410,irq:0}
//},
//{model:'Intel(R)Core(TM)i5-5287UCPU@2.90GHz',
//speed:2900,
//times:{user:45641410,nice:0,sys:39136540,idle:698627210,irq:0}
//}]
os.endianness()
说明:
该方法返回一个字符串,表明Node.js二进制编译环境的字节顺序,可能的值为:'BE'(Big-Endian)大端模式,'LE'(Little-Endian)小端模式
大端模式:是指数据的高字节保存在内存的低地址中,数据的低字节保存在内存的高地址中。
小端模式:是指数据的高字节保存在内存的高地址中,数据的低字节保存在内存的低地址中。
以0x12345678为例:
demo:
console.log(os.endianness()); //LE
os.freemem()
说明:
该方法以整数的形式返回空闲系统内存的字节数
demo:
console.log(os.freemem()); //7155720192
os.homedir()
说明:
该方法以字符串的形式返回当前用户的home目录
demo:
console.log(os.homedir()); ///Users/xiaoqiang
os.hostname()
说明:
该方法以字符串的形式返回操作系统的主机名
demo:
console.log(os.hostname()); //xiaoqiangMacBook-Pro.local
os.loadavg()
说明:
该方法返回一个数组,包含1,5,15分钟平均负载.
demo:
console.log(os.loadavg()); //[2.57080078125,2.38037109375,2.30908203125]windows下返回[0,0,0]
os.networkInterfaces()
说明:
该方法返回一个对象,包含被赋予网络地址的网络接口.
demo:
console.log(os.networkInterfaces());
//{
//lo:[
//{
//address:'127.0.0.1',//被赋予的IPv4或IPv6地址
//netmask:'255.0.0.0',//IPv4或IPv6子网掩码
//family:'IPv4',//IPv4或IPv6
//mac:'00:00:00:00:00:00',//网络接口的MAC地址
//internal:true,//如果网络接口是loopback或相似的远程不能用的接口时,值为true,否则为false
//cidr:'127.0.0.1/8'//以CIDR表示法分配的带有路由前缀的IPv4或IPv6地址。如果netmask参数不可用,则该属性是null
//},
//{
//address:'::1',
//netmask:'ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff',
//family:'IPv6',
//mac:'00:00:00:00:00:00',
//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',
//internal:false,
//cidr:'fe80::a00:27ff:fe4e:66a1/64'
//}
//]
//}
os.platform()
说明:
该方法返回Node.js编译时的操作系统平台,值可能为:'aix','darwin','freebsd','linux','openbsd','sunos','win32′
demo:
console.log(os.platform()); //darwin
os.release()
说明:
该方法返回一个字符串,指定操作系统的发行版.
demo:
console.log(os.release()); //17.2.0
os.tmpdir()
说明:
该方法返回一个字符串,指定操作系统的发行版.
demo:
console.log(os.tmpdir()); ///var/folders/xv/4dbb00000gn/T
os.totalmem()
说明:
该方法以整数的形式返回所有系统内存的字节数.
demo:
console.log(os.totalmem()); //17179869184
os.type()
说明:
该方法返回一个字符串,表明操作系统的名字
demo:
console.log(os.type()); //Darwin
os.uptime()
说明:
该方法在几秒内返回操作系统的上线时间
demo:
console.log(os.uptime()); //1293306
os.userInfo([options])
说明:
该方法用来获取当前有效用户的信息
该方法传递一个encoding参数,用来指定返回值的编码方式,默认utf8,也可以设置为:buffer。
demo:
console.log(os.userInfo());
//{
//uid:501,
//gid:20,
//username:'xiaoqiang',
//homedir:'/Users/xiaoqiang',
//shell:'/bin/bash'
//}
console.log(os.userInfo({encoding:'buffer'}));
//{
//uid:501,
//gid:20,
//username:,
//homedir:,
//shell:
//}
希望本文所述对大家node.js程序设计有所帮助。