W skrócie, jakie są potencjalne negatywne konsekwencje wstrzymania procesu za pomocą control-z?

11

Używając bash, można zatrzymać proces za pomocą control-z. Czy są jednak jakieś ogólne okoliczności lub wytyczne, na które należy uważać, gdy proces nie zachowywałby się dobrze po wstrzymaniu?

Mój konkretny scenariusz polegał na utworzeniu pliku tar, który trwał dłużej niż oczekiwano. Chciałem go zatrzymać, aby umieścić go w tle, ale postanowiłem tego nie robić. Moje pytanie nie jest oczywiście specyficzne dla smoły. Mam raczej nadzieję, że lepiej zrozumiem funkcję pauzy w bashu, a także to, co sprawi, że proces źle zareaguje na wstrzymanie.

Wesley
źródło

Odpowiedzi:

3

Zadania przechowywania (pvmove, veritas vx-cokolwiek), które opierają się na kopiach atomowych. Nie jest dobrze, jeśli utkną poza swoją kontrolą. Zależy to od tego, czy zadanie po prostu odpala niektóre API, a resztę wykonuje z przestrzeni jądra, a następnie jest bezpieczne. Jeśli dzieje się to w tym * procesie * w twojej powłoce, to naprawdę idź z ekranem i trzymaj ręce z daleka.

Zdecydowanie zalecamy unikanie zatrzymywania ich w tle. Polecenia korzystające z buforów takich jak dd wydają się być lepsze, z wyjątkiem wspomnianych powyżej napędów taśm.

(Kiedyś wygrałem dodatkowy restart, mniej snu i dużo paranoi, kiedy to mi się przydarzyło podczas sprzątania bałaganu innych ludzi. Oczywiście: nie próbuj używać skrótów, jeśli naprawiasz skróty innych ludzi ...)

Florian Heigl
źródło
6

Jeśli proces zapisuje dane, pamiętaj, że problemy z synchronizacją z urządzeniami i buforami nieposiadającymi losowego dostępu mogą być problematyczne. Widziałem czasami napędy taśm.

Magellan
źródło
sesje sieci / zapory mogą przekroczyć limit czasu i nie mogą zostać ponownie uruchomione, ponieważ TCP-SYN nie jest ponownie wysyłany.
jippie
Stos TCP nadal wysyła potwierdzenia, że ​​okno jest pełne, prawda?
Magellan
Pakiety utrzymywania przy życiu nie są częścią protokołu TCP ani protokołu IP, w najlepszym wypadku są częścią aplikacji. Zapora ogniowa, zdalny klient lub serwer mogą więc przekroczyć limit czasu oczekiwania na pakiet i zrzucić gniazdo / połączenie.
jippie
Nie mówiąc do keepalives, są one oczywiście na poziomie aplikacji. Mówię o ACK dla przesuwanego okna TCP na poziomie transportu.
Magellan
2

I prozaiczny scenariusz: zrobienie Ctrl-Z, potem zapomnienie o tym, wylogowanie się i utrata procesu! =)

gfountis
źródło
0

Nie jest to konkretna odpowiedź na pytanie, ale możesz też spróbować uruchomić równoległe zadania screen. Możesz więc używać powłoki jednocześnie z innym programem.

jhtong
źródło
Tak, ekran jest zawsze dobrym rozwiązaniem. Nie jestem jednak pewien, jak odpowiedzieć na twoje imię.
Wesley,
@toiletfreak W jaki sposób screen jest alternatywą dla pauzy? Ekran wykonuje pracę w tle, prawda? Ale trwa nadal, jeśli odłączysz ekran ...
Bernhard