Mam serwer oparty na języku python, który uruchamiam z terminala. Ta konkretna instancja terminala daje następnie kontrolę programowi, a program używa go jako swego rodzaju okna rejestrowania, aż do jego zamknięcia. Czy to normalne, czy powinienem w jakiś sposób spróbować uruchomić program w inny sposób, w jaki będzie on po prostu pokazywany jako aktywny proces? Jeśli zamknę terminal, od którego uruchomiłem program, program umiera wraz z nim.
Dziękuję Ci
command-line
python
services
U2ros
źródło
źródło
Odpowiedzi:
Nawet stary bash używa & do wysyłania procesów do tła, ale jest też kilka innych sposobów ... ale podstawowe są dwa:
Kilka innych przydatnych poleceń:
źródło
Zmień go w demona (usługa)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh
źródło
Użycie
&
powoduje, że program działa w tle, zamiast blokować powłokę aż do zakończenia programu.źródło
dixon@dixon-vaio:~$ nautilus & [1] 11835
. Zwraca identyfikator procesu, a pojawi się nowy monit powłoki. Sprawdź to także: http://unix.stackexchange.com/questions/3886/difference-between-nohup-disown-and .Możesz także użyć:
oto skrypt init.d do uruchamiania i zatrzymywania programu w tle.
źródło
Z terminalu możesz także uruchomić
screen
lub wykonać polecenie, używając&
. Łatwy sposób na prowadzenie ciągłych procesów.źródło
&
w moim przypadku tylko użycie tła w tym przypadku jest za mało. OP stwierdza, że jego serwer loguje się na standardowe wyjście, więc&
jego terminal będzie zaśmiecony danymi wyjściowymi. Ponadto, ponieważ OP wspomina o zamknięciu terminala , OP nie będzie w stanie ponownie wysunąć na pierwszy plan procesu i wszystkie dane wyjściowe dziennika zostaną utracone. Przynajmniej lepiej, aby przekierować go do pliku dziennika lub pozostać przyscreen
instalacji - ale proszę wyjaśnić podstawyscreen
OP (odłącz / dołącz / etc)