5

Я хотел бы запускать команды из терминала (в основном это серверы Python) и по существу демонизировать их. Я использую терминал MinGW "Git Bash", который поставляется вместе с установщиком Windows для Git.

Вещи пытались, что не работают

  • nohup -> команда не найдена
  • setsid -> команда не найдена
  • $ script.py & -> не работает должным образом
  • $ script.py & disown -> не работает должным образом

Я бы использовал bg , но моя конечная цель - закрыть терминал после того, как все мои серверы будут запущены, а не завершать процессы.

2 ответа2

3

Это синтез моего длинного ответа на аналогичный вопрос в SO.

Если ваше приложение входит в stdout/stderr, используйте:

cmd //c start cmd //k  "path\\to\\script-dir\\script.py"

Если он регистрирует файлы, через сокеты и т.д. И вам не нужен stdout/stderr, используйте:

cmd //c start //D "path\\to\\script-dir" script.py

В обоих случаях вы получаете демоноподобный процесс, который выживет, когда вы закроете bash. В первом случае ваш скрипт размещается в видимом окне cmd.exe .

Гораздо больше здесь

1

Я понятия не имею, будет ли это работать в bash в Windows, но bash предоставляет встроенную команду для "отключения" фонового процесса. После того, как вы сделали задание с помощью bg просто запустите команду disown . По умолчанию он отменяет самое последнее задание bg -ed, но вы также можете присвоить ему номер задания, если у вас есть несколько фоновых заданий.

Больше информации здесь о встроенных модулях управления работой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .