Демонизировать команду означает запустить ее как фоновый процесс, который продолжает выполняться даже после завершения терминального сеанса. Вот несколько способов демонизировать команду на разных языках программирования:
-
Bash (Unix/Linux):
nohup <command> &>/dev/null &Эта команда перенаправляет стандартный вывод и ошибку в
/dev/nullи запускает команду в фоновом режиме с использованиемnohup. -
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. -
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()вызывается, чтобы позволить родительскому процессу выйти, не дожидаясь дочернего процесса.