Несколько методов демонизации команды с примерами кода

Демонизировать команду означает запустить ее как фоновый процесс, который продолжает выполняться даже после завершения терминального сеанса. Вот несколько способов демонизировать команду на разных языках программирования:

  1. Bash (Unix/Linux):

    nohup <command> &>/dev/null &

    Эта команда перенаправляет стандартный вывод и ошибку в /dev/nullи запускает команду в фоновом режиме с использованием nohup.

  2. Python:

    import os
    import sys
    pid = os.fork()
    if pid > 0:
    sys.exit(0)
    if pid == 0:
    os.setsid()
    os.umask(0)
    os.chdir("/")
    
    os.close(sys.stdin.fileno())
    os.close(sys.stdout.fileno())
    os.close(sys.stderr.fileno())
    
    os.open(os.devnull, os.O_RDWR)
    os.dup2(0, 1)
    os.dup2(0, 2)
    
    # Run your command here
    os.execvp("<command>", ["<command>"])

    Этот код использует модуль osдля разветвления процесса, создания нового сеанса и отключения от терминала. Он также перенаправляет стандартные потоки ввода, вывода и ошибок в /dev/null.

  3. Node.js:

    const { spawn } = require('child_process');
    const command = '<command>';
    const args = ['<command>', ...<command_arguments>];
    const child = spawn(command, args, {
    detached: true,
    stdio: 'ignore',
    });
    child.unref();

    Этот код использует модуль child_processдля создания нового процесса и его отделения от родительского процесса. Метод unref()вызывается, чтобы позволить родительскому процессу выйти, не дожидаясь дочернего процесса.