The Node.js OS module has many useful utility functions for getting information about the computer system that the OS module’s program is running on. It can provide information about hardware such as CPUs, endianness, the home directory, IP address, hostname, the platform the program is running on, system uptime, information about the currently logged in user and more.
We can use the OS module by writing const os = require('os');
at the top of a file. There are many useful properties in the OS module. Below are some of the useful properties in the OS module:
os.EOL
The os.EOL
property is a string constant that has the operating system specific end of line marker. For POSIX operating system, it’s \n
and for Windows, it’s \r\n
. We can use it like the following code as an example:
console.log(`End of line market is ${os.EOL}`)
Then we get:
'End of line market is \n'
os.arch()
The os.arch()
function returns a string that tells us the operating system CPU architecture that the Node.js binary is compiled on. Possible values are 'arm'
, 'arm64'
, 'ia32'
, 'mips'
, 'mipsel'
, 'ppc'
, 'ppc64'
, 's390'
, 's390x'
, 'x32'
, and 'x64'
. It’s the same as the process.arch
function. For example, we can use it like in the following code:
console.log(`Node.js is built in ${os.arch()}`)
The we get:
'Node.js is built in x64'
if Node.js was compiled on an x64 system
os.constants
The os.constants
property has a collection of constants for error codes, process signals, etc. The following are the constants from os.constants
:
Signal Constants
SIGHUP
— signal sent to indicate when a controlling terminal is closed or a parent process exits.SIGINT
— signal sent to indicate when a user wishes to interrupt a process ((Ctrl+C)
).SIGQUIT
— signal sent to indicate when a user wishes to terminate a process and perform a core dump.SIGILL
— signal sent to a process to notify that it has attempted to perform an illegal, malformed, unknown, or privileged instruction.SIGTRAP
— signal sent to a process when an exception has occurred.SIGABRT
— signal sent to a process to request that it abort.SIGIOT
— same asSIGABRT
SIGABRTSIGBUS
— signal sent to a process to notify that it has caused a bus error.SIGFPE
— signal sent to a process to notify that it has performed an illegal arithmetic operation.SIGKILL
— signal sent to a process to terminate it immediately.SIGUSR1
SIGUSR2
— signal sent to a process to identify user-defined conditions.SIGSEGV
— signal sent to a process to notify of a segmentation fault.SIGPIPE
— signal sent to a process when it has attempted to write to a disconnected pipe.SIGALRM
— signal sent to a process when a system timer elapses.SIGTERM
— signal sent to a process to request termination.SIGCHLD
— signal sent to a process when a child process terminates.SIGSTKFLT
— signal sent to a process to indicate a stack fault on a co-processor.SIGCONT
— signal sent to instruct the operating system to continue a paused process.SIGSTOP
— signal sent to instruct the operating system to halt a process.SIGTSTP
— signal sent to a process to request it to stop.SIGBREAK
— signal sent to indicate when a user wishes to interrupt a process.SIGTTIN
— signal sent to a process when it reads from the teletypewriter while in the background.SIGTTOU
— signal sent to a process when it writes to the teletypewriter while in the background.SIGURG
— signal sent to a process when a socket has urgent data to read.SIGXCPU
— signal sent to a process when it has exceeded its limit on CPU usage.SIGXFSZ
— signal sent to a process when it grows a file larger than the maximum allowed.SIGVTALRM
— signal sent to a process when a virtual timer has elapsed.SIGPROF
— signal sent to a process when a system timer has elapsed.SIGWINCH
— signal sent to a process when the controlling terminal has changed its size.SIGIO
— signal sent to a process when I/O is available.SIGPOLL
— same asSIGIO
SIGIOSIGLOST
— signal sent to a process when a file lock has been lost.SIGPWR
— signal sentto a process to notify of a power failure.SIGINFO
— same asSIGPWR
SIGPWRSIGSYS
— signal sent to a process to notify of a bad argument.SIGUNUSED
— same asSIGSYS
Error Constants for POSIX Systems
The following are constants for error indicators that are raised in POSIX systems.
E2BIG
— list of arguments is longer than expected.EACCES
— the operation did not have sufficient permissions.EADDRINUSE
— the network address is already in use.EADDRNOTAVAIL
— the network address is currently unavailable for use.EAFNOSUPPORT
— he network address family is not supported.EAGAIN
— there is currently no data available and to try the operation again later.EALREADY
— the socket already has a pending connection in progress.EBADF
— file descriptor is not valid.EBADMSG
— invalid data message.EBUSY
— device or resource is busy.ECANCELED
— an operation was canceled.ECHILD
— there are no child processes.ECONNABORTED
— network connection has been aborted.ECONNREFUSED
— network connection has been refused.ECONNRESET
— network connection has been reset.EDEADLK
— resource deadlock has been avoided.EDESTADDRREQ
— a destination address is required.EDOM
— an argument is out of the domain of the function.EDQUOT
— the disk quota has been exceeded.EEXIST
— the file already exists.EFAULT
— invalid pointer address.EFBIG
— the file is too large.EHOSTUNREACH
— the host is unreachable.EIDRM
— the identifier has been removed.EILSEQ
— an illegal byte sequence encountered.EINPROGRESS
— an operation is already in progress.EINTR
— a function call was interrupted.EINVAL
— an invalid argument was provided.EIO
— unspecified I/O error.EISCONN
— the socket is connected.EISDIR
— the path is a directory.ELOOP
— too many levels of symbolic links in a path.EMFILE
— there are too many open files.EMLINK
— there are too many hard links to a file.EMSGSIZE
— the provided message is too long.EMULTIHOP
— a multihop was attempted.ENAMETOOLONG
— he filename is too long.ENETDOWN
— the network is down.ENETRESET
— the connection has been aborted by the network.ENETUNREACH
— the network is unreachable.ENFILE
— too many open files in the system.ENOBUFS
— no buffer space is available.ENODATA
— no message is available on the stream head read queue.ENODEV
— that there is no such device.ENOENT
— there is no such file or directory.ENOEXEC
— an exec format error.ENOLCK
— there are no locks available.ENOLINK
— a link has been severed.ENOMEM
— there is not enough space.ENOMSG
— there is no message of the desired type.ENOPROTOOPT
— a given protocol is not available.ENOSPC
— there is no space available on the device.ENOSR
— there are no stream resources available.ENOSTR
— a given resource is not a stream.ENOSYS
— a function has not been implemented.ENOTCONN
— the socket is not connected.ENOTDIR
— the path is not a directory.ENOTEMPTY
— the directory is not empty.ENOTSOCK
— the given item is not a socket.ENOTSUP
— a given operation is not supported.ENOTTY
— inappropriate I/O control operation.ENXIO
— no such device or address.EOPNOTSUPP
— an operation is not supported on the socket. WhileENOTSUP
andEOPNOTSUPP
have the same value on Linux, according to POSIX.1 these error values should be distinct.)EOVERFLOW
— a value is too large to be stored in a given data type.EPERM
— the operation is not permitted.EPIPE
— a pipe is broken.EPROTO
— a protocol error.EPROTONOSUPPORT
— a protocol is not supported.EPROTOTYPE
— wrong type of protocol for a socket.ERANGE
— the results are too large.EROFS
— the file system is read only.ESPIPE
— invalid seek operation.ESRCH
— there is no such process.ESTALE
— the file handle is stale.ETIME
— timer expiredETIMEDOUT
— the connection timed out.ETXTBSY
— a text file is busy.EWOULDBLOCK
— the operation would block.EXDEV
— improper link.
Error Constants for Windows Systems
The following are constants for error indicators that are raised in Windows systems.
WSAEINTR
— an interrupted function call.WSAEBADF
— an invalid file handle.WSAEACCES
— insufficient permissions to complete the operation.WSAEFAULT
— an invalid pointer address.WSAEINVAL
— an invalid argument was passed.WSAEMFILE
— there are too many open files.WSAEWOULDBLOCK
— a resource is temporarily unavailable.WSAEINPROGRESS
— an operation is currently in progress.WSAEALREADY
— an operation is already in progress.WSAENOTSOCK
— the resource is not a socket.WSAEDESTADDRREQ
— a destination address is required.WSAEMSGSIZE
— the message size is too long.WSAEPROTOTYPE
— the wrong protocol type for the socket.WSAENOPROTOOPT
— a bad protocol option.WSAEPROTONOSUPPORT
— the protocol is not supported.WSAESOCKTNOSUPPORT
— the socket type is not supported.WSAEOPNOTSUPP
— the operation is not supported.WSAEPFNOSUPPORT
— the protocol family is not supported.WSAEAFNOSUPPORT
— the address family is not supported.WSAEADDRINUSE
— the network address is already in use.WSAEADDRNOTAVAIL
— the network address is not available.WSAENETDOWN
— the network is down.WSAENETUNREACH
— the network is unreachable.WSAENETRESET
— the network connection has been reset.WSAECONNABORTED
— the connection has been aborted.WSAECONNRESET
— the connection has been reset by the peer.WSAENOBUFS
— there is no buffer space available.WSAEISCONN
— the socket is already connected.WSAENOTCONN
— the socket is not connected.WSAESHUTDOWN
— data cannot be sent after the socket has been shut down.WSAETOOMANYREFS
— there are too many references.WSAETIMEDOUT
— the connection has timed out.WSAECONNREFUSED
— the connection has been refused.WSAELOOP
— a name cannot be translated.WSAENAMETOOLONG
— a name was too long.WSAEHOSTDOWN
— a network host is down.WSAEHOSTUNREACH
— there is no route to a network host.WSAENOTEMPTY
— the directory is not empty.WSAEPROCLIM
— there are too many processes.WSAEUSERS
— the user quota has been exceeded.WSAEDQUOT
— the disk quota has been exceeded.WSAESTALE
— a stale file handle reference encountered.WSAEREMOTE
— the item is remote.WSASYSNOTREADY
— the network subsystem is not ready.WSAVERNOTSUPPORTED
— thewinsock.dll
version is out of range.WSANOTINITIALISED
— successful WSAStartup has not yet been performed.WSAEDISCON
— graceful shutdown is in progress.WSAENOMORE
— there are no more results.WSAECANCELLED
— an operation has been canceled.WSAEINVALIDPROCTABLE
— the procedure call table is invalid.WSAEINVALIDPROVIDER
— invalid service provider.WSAEPROVIDERFAILEDINIT
— the service provider failed to initialize.WSASYSCALLFAILURE
— a system call failure.WSASERVICE_NOT_FOUND
— service was not found.WSATYPE_NOT_FOUND
— a class type was not found.WSA_E_NO_MORE
— there are no more results.WSA_E_CANCELLED
— the call was canceled.WSAEREFUSED
— a database query was refused.
dlopen Constants
The result of the dlopen
command are also included in the os.constants
object. The dlopen
command is for dynamically loading libraries into memory.
RTLD_LAZY
— Perform lazy binding. Node.js sets this flag by default.RTLD_NOW
— Resolve all undefined symbols in the library beforedlopen(3)
returns.RTLD_GLOBAL
— Symbols defined by the library will be made available for symbol resolution of subsequently loaded libraries.RTLD_LOCAL
— Opposite ofRTLD_GLOBAL
. This is the default behavior if neitherRTLD_GLOBAL
orRTLD_LOCAL
is specified.RTLD_DEEPBIND
— Make a self-contained library use its own symbols in preference to symbols from previously loaded libraries.
Priority Constants
The constants below are for setting the priority of scheduled processes. The nice value refers to the integer value for CPU scheduling priority which are used the nice
program in Unix and Linux. However, the some of the values are also the same in Windows. The default value is 0. 19 indicates the lowest CPU priority while -20 indicates the highest.
PRIORITY_LOW
— The lowest process scheduling priority. This corresponds toIDLE_PRIORITY_CLASS
on Windows, and a nice value of 19 on all other platforms.PRIORITY_BELOW_NORMAL
— This corresponds toBELOW_NORMAL_PRIORITY_CLASS
on Windows and a nice value of 10 on all other platforms.PRIORITY_NORMAL
— The default process scheduling priority. This corresponds toNORMAL_PRIORITY_CLASS
on Windows and a nice value of 0 on all other platforms.PRIORITY_ABOVE_NORMAL
— This corresponds toABOVE_NORMAL_PRIORITY_CLASS
on Windows and a nice value of -7 on all other platforms.PRIORITY_HIGH
— . This corresponds toHIGH_PRIORITY_CLASS
on Windows and a nice value of -14 on all other platforms.PRIORITY_HIGHEST
— The highest process scheduling priority. This corresponds toREALTIME_PRIORITY_CLASS
on Windows and a nice value of -20 on all other platforms.
The schedule priorities ordered from lowest to highest are — PRIORITY_LOW
, PRIORITY_BELOW_NORMAL
, PRIORITY_NORMAL
, PRIORITY_ABOVE_NORMAL
, PRIORITY_HIGH
, PRIORITY_HIGHEST
.
The Node.js OS module has many useful utility functions for getting information about the computer system that the OS module’s program is running on. The modules have many more properties containing useful information like CPUs, endianness, home directory, IP address, hostname, the platform the program is running on, system uptime, information about the currently logged in user and more.