Код IT
← Каталог

Простые приложения на JavaScript — Пример кода

Фрагмент из «Простые приложения на JavaScript»: Пример кода.

javascript javascriptencyclopedia103 embed URL статья в энциклопедии
JavaScript main.js
const { execSync } = require('child_process');
const os = require('os');

function getProcesses(filterName = '') {
    let command;
    let args;

    const platform = os.platform();

    if (platform === 'win32') {
        command = 'wmic';
        args = ['process', 'get', 'Name,PID,CPU,Memory'].join(' ');
    } else {
        // Linux / macOS
        command = 'ps';
        args = ['-ef'];
    }

    try {
        const output = execSync(`${command} ${args}`, { encoding: 'utf-8' });
        const lines = output.trim().split('\n');
        
        const processes = [];

        // Пропускаем заголовок (если есть)
        const startLine = platform === 'win32' ? 1 : 1; 

        for (let i = startLine; i < lines.length; i++) {
            const line = lines[i].trim();
            if (!line) continue;

            let processObj = {};

            if (platform === 'win32') {
                // Простой парсинг для wmic (может требовать доработки для сложных случаев)
                const parts = line.split(/\s+/);
                if (parts.length >= 2) {
                    processObj = {
                        name: parts[0],
                        pid: parts[1] || 'N/A',
                        cpu: parts[2] || 'N/A',
                        memory: parts[3] || 'N/A'
                    };
                }
            } else {
                // Парсинг для ps -ef (UID PID PPID C STIME TTY TIME CMD)
                const parts = line.split(/\s+/);
                if (parts.length >= 7) {
                    processObj = {
                        uid: parts[0],
                        pid: parts[1],
                        ppid: parts[2],
                        time: parts[6], // Время выполнения
                        cmd: parts.slice(7).join(' ') // Команда
                    };
                }
            }

            if (Object.keys(processObj).length > 0) {
                if (filterName && !processObj.name?.includes(filterName) && !processObj.cmd?.includes(filterName)) {
                    continue;
                }
                processes.push(processObj);
            }
        }

        return processes;

    } catch (error) {
        console.error('Ошибка выполнения команды:', error.message);
        return [];
    }
}

function displayProcesses(processes) {
    console.table(processes);
}

// Пример вызова
const allProcs = getProcesses();
displayProcesses(allProcs.slice(0, 10)); // Показать первые 10

const nodeProcs = getProcesses('node');
if (nodeProcs.length > 0) {
    console.log('\nНайдены процессы Node.js:');
    displayProcesses(nodeProcs);
}
const { execSync } = require('child_process');
const os = require('os');

function getProcesses(filterName = '') {
    let command;
    let args;

    const platform = os.platform();

    if (platform === 'win32') {
        command = 'wmic';
        args = ['process', 'get', 'Name,PID,CPU,Memory'].join(' ');
    } else {
        // Linux / macOS
        command = 'ps';
        args = ['-ef'];
    }

    try {
        const output = execSync(`${command} ${args}`, { encoding: 'utf-8' });
        const lines = output.trim().split('\n');
        
        const processes = [];

        // Пропускаем заголовок (если есть)
        const startLine = platform === 'win32' ? 1 : 1; 

        for (let i = startLine; i < lines.length; i++) {
            const line = lines[i].trim();
            if (!line) continue;

            let processObj = {};

            if (platform === 'win32') {
                // Простой парсинг для wmic (может требовать доработки для сложных случаев)
                const parts = line.split(/\s+/);
                if (parts.length >= 2) {
                    processObj = {
                        name: parts[0],
                        pid: parts[1] || 'N/A',
                        cpu: parts[2] || 'N/A',
                        memory: parts[3] || 'N/A'
                    };
                }
            } else {
                // Парсинг для ps -ef (UID PID PPID C STIME TTY TIME CMD)
                const parts = line.split(/\s+/);
                if (parts.length >= 7) {
                    processObj = {
                        uid: parts[0],
                        pid: parts[1],
                        ppid: parts[2],
                        time: parts[6], // Время выполнения
                        cmd: parts.slice(7).join(' ') // Команда
                    };
                }
            }

            if (Object.keys(processObj).length > 0) {
                if (filterName && !processObj.name?.includes(filterName) && !processObj.cmd?.includes(filterName)) {
                    continue;
                }
                processes.push(processObj);
            }
        }

        return processes;

    } catch (error) {
        console.error('Ошибка выполнения команды:', error.message);
        return [];
    }
}

function displayProcesses(processes) {
    console.table(processes);
}

// Пример вызова
const allProcs = getProcesses();
displayProcesses(allProcs.slice(0, 10)); // Показать первые 10

const nodeProcs = getProcesses('node');
if (nodeProcs.length > 0) {
    console.log('\nНайдены процессы Node.js:');
    displayProcesses(nodeProcs);
}