Этот проект начался с необходимости быстро просмотреть, сколько ОЗУ (оперативной памяти) использует мой компьютер. Будучи пользователем Mac, мне нужно запустить ActivityMonitor и перейти на вкладку памяти.

Моей первой мыслью было, что этот процесс можно было бы упростить и запустить прямо из терминала. Именно здесь на помощь приходит модуль узлов os, поскольку он может предоставить нам полезную информацию о нашей операционной системе и оборудовании. Нам также нужно запустить это приложение как дочерний процесс, поэтому нам потребуется использовать метод spawn из модуля child_process.

ОС Модуль

Модуль os предоставляет нам доступ к свойствам и методам нашей операционной системы. Нас интересуют методы os: totalmem() и freemem().

const os = require('os')
// returns total ram on machine in bytes as an integer
console.log(os.totalmem())
// returns free ram on machine in bytes as an integer
console.log(os.freemem())


Модуль child_process

Модуль child_process дает узлу возможность управлять и порождать подпроцессы. Пример кода ниже запустит ls -a. Мы собираемся использовать это для запуска файла узла в качестве подпроцесса.

const { spawn } = require('child_process')
// spawn(command[, args][, options])
spawn('ls', ['-a'], { stdio: 'inherit'})


Созданиеприложения

Нам нужно создать файл с именем printRam.js, который будет использовать модуль os для получения значений общего и свободного ОЗУ. Затем нам нужно будет преобразовать их из байтов в гигабайты и распечатать для пользователя.

Далее нам нужно создать файл с именем index.js, который будет запускать узел printRam.js как дочерний процесс, используя метод spawn из модуля child_process.

Наконец, нам нужно инкапсулировать вызов порождения в функцию, чтобы передать его в setInterval (помните, что setInterval принимает функции обратные вызовы, а не вызовы функций). На этом этапе наше приложение должно распечатывать данные об использовании ОЗУ в реальном времени и обновлять значения каждую секунду.

Бегать

Перейдите к своему терминалу и запустите узел в файле index.js.

node ~/path-to-file/index.js 

Вуаля, мы можем наблюдать за использованием ОЗУ в режиме реального времени с нашего терминала. Чтобы убить этот процесс, просто нажмите Control+C.

Total RAM => 32.00GB   Free RAM => 11.77GB

Мы также можем создать собственную оболочку псевдоним для запуска этого приложения, добавив приведенную ниже строку в наш файл .bashrc (не забудьте отредактировать путь к файлу index.js). Затем нажмите «Сохранить», закройте файл и запустите exec bash. Теперь мы можем запустить это приложение, просто набрав «ram» в терминале.

alias ram='node ~/path-to-file/index.js'

Спасибо за чтение, если у вас есть какие-либо вопросы, задайте их ниже.