To pytanie ma pochodzić zupełnie się dużo ( bardzo dużo ), ale jestem znalezienie odpowiedzi na ogół niekompletne. Ogólne pytanie brzmi: „Dlaczego moja praca nie zostaje zabita, kiedy wychodzę / zabijam ssh?”, I oto, co znalazłem. Pierwsze pytanie brzmi: jak ogólne są następujące informacje? Poniższe wydaje się być prawdą w przypadku współczesnego Linux-a Debiana, ale brakuje mi trochę bitów; a co inni powinni wiedzieć?
Wszystkie procesy potomne powłoki działającej w tle lub nie w powłoce otwartej przez połączenie ssh są zabijane przez SIGHUP, gdy połączenie ssh jest zamknięte tylko wtedy, gdy
huponexit
jest ustawiona opcja: uruchom,shopt huponexit
aby sprawdzić, czy to prawda.Jeśli
huponexit
jest to prawda, możesz użyćnohup
lubdisown
oddzielić proces od powłoki, aby nie został zabity po wyjściu. Lub działaj zscreen
.Jeśli
huponexit
ma wartość false, co jest obecnie domyślnym ustawieniem przynajmniej niektórych linuksów, zadania w tle nie zostaną zabite przy normalnym wylogowaniu.Ale nawet jeśli
huponexit
jest to fałsz, to jeśli połączenie ssh zostanie zabite lub spadnie (inaczej niż normalne wylogowanie), procesy w tle nadal będą zabijane. Można tego uniknąć przezdisown
lubnohup
jak w (2).Istnieje pewne rozróżnienie między (a) procesami, których proces macierzysty jest terminalem, i (b) procesami, które mają stdin, stdout lub stderr podłączone do terminala . Nie wiem, co dzieje się z procesami, które są (a), a nie (b), i odwrotnie.
Ostatnie pytanie: jak mogę uniknąć zachowania (3)? Innymi słowy, domyślnie procesy w tle Debiana działają wesoło same po wylogowaniu, ale nie po zerwaniu połączenia ssh. Chciałbym, aby to samo stało się z procesami niezależnie od tego, czy połączenie zostało zamknięte normalnie, czy zabite. Czy to zły pomysł?
Edycja: Innym ważnym sposobem na utrzymanie zabójstw, który działa (?) W obu przypadkach, jest uruchomienie ich przez ekran . Ale pytanie dotyczy bardziej zrozumienia, kiedy rzeczy giną, a kiedy nie: czasem ludzie chcą, aby zadania zostały zabite podczas wylogowania.
Więcej wątków: - Wyjaśnienie sygnałów (wzdychanie), zadań i terminala sterującego - /server/117152/do-background-processes-get-a-sighup-when-logging-off - Kontynuuj SSH zadanie / zadania w tle podczas zamykania SSH - czy zadanie umieszczone w tle będzie kontynuowane po zamknięciu sesji SSH? - Zapobieganie zatrzymaniu już działającego procesu w tle po zamknięciu klienta SSH - Jak mogę rozpocząć proces przez SSH, aby kontynuował działanie po rozłączeniu? - Nie można utrzymać zadania zdalnego w systemie OS X - Zamknij połączenie SSH