Означает ли тот факт, что я потерял командную строку, процесс все еще выполняется?
Навряд ли. Процесс будет иметь соединение с виртуальным терминалом ssh, который в конечном итоге истечет время ожидания и уничтожит все процессы, связанные с этим терминалом - хотя gunicorn может быть написан так, что он не завершится, когда исчезнет управляющий терминал.
Как мне вернуться в командную строку, не убивая процесс?
Если терминал еще жив, нажмите CTRL+Z, чтобы вернуться в командную строку, затем напишите bg
чтобы поместить gnuicorn в фоновом режиме (и используйте fg
чтобы вернуться к процессу, чтобы вы могли его убить - например, с помощью CTRL+C
). ,
Запустив его как gunicorn -w 4 myapp:app &
немедленно поместит процесс в фоновый режим оболочки - хотя в зависимости от сервера он все равно может быть убит при завершении сеанса ssh. Запуск nohup gunicorn -w 4 myapp:app &
обеспечит запуск процесса даже после отключения. Прочитайте справочную страницу nohup
Другой вариант - запустить процесс в терминале, который позволяет подключиться к нему. Это то, что позволяет вам экран GNU или tmux - эффективно позволяя отключить сеанс ssh, подключиться позже и снова присоединиться к существующему сеансу терминала.
Как мне вернуться и следить за процессом позже?
Вы не можете, если вы не запустите процесс внутри экрана GNU или сеанса tmux - в этом случае документы / руководства по экрану или tmux сообщат вам подробности - или вы запустили сервер для запуска в качестве службы / в фон.
Как мне в итоге убить процесс?
Большинство серверных программ будут иметь интерфейс управления (например, команды, которые вам нужно будет выполнить), и вам нужно будет найти соответствующую информацию в документации.
Или они интегрируются в процедуры запуска и управления службами linux/unix, и в этом случае вы управляете ими как любыми другими службами, например, /sbin/service fooserver start
/sbin/service fooserver stop
в некоторых дистрибутивах linux.
Или вы должны сделать это вручную. Найдите процесс, запустив ps -ef |grep fooserver
чтобы найти его pid, и убейте его, kill <the pid>
. Или посмотрите в документации, может ли ошибка написать «pid-файл» при запуске, чтобы позже вы могли найти идентификатор процесса в этом файле.
Теперь кажется, что по крайней мере у gunicorn есть аргумент -D, который используется, чтобы поместить сервер в фоновом режиме, отсоединив его от терминала, чтобы он не был убит при разрыве соединения ssh/putty. Смотрите http://gunicorn.org/configure.html#server-mechanics
Затем вам придется управлять / контролировать его вручную, то есть уничтожать, как я уже упоминал выше, отслеживать его через файл журнала, который он создает - или любые встроенные веб-приложения для мониторинга или команды, которые может иметь gnuicorn.
Здесь очевидно, что кто-то должен упаковать gnuicorn для конкретного варианта linux/ * nix и написать соответствующие сценарии и конфигурационные файлы, чтобы интегрировать его в собственное управление службами дистрибутива. (например, стандартный скрипт в /etc/init.d/ для запуска и остановки сервера, используемый во многих linux'ах)