Tryb kopiowania ekranu GNU blokuje wykonywanie?


11

Używam trybu przewijania / kopiowania GNU Screen. Nacisnąłem więc Control-A [, aby przejść do trybu kopiowania, przewiń w górę do interesującej mnie sekcji ... a potem zapomnę.

Wygląda jednak na to, że pozostawienie ekranu GNU w trybie przewijania / kopiowania blokuje wykonywanie (niezależnie od tego, która aplikacja była wtedy uruchomiona). Na przykład, jeśli uruchomię lokalny serwer sieciowy, jeśli jestem w trybie przewijania / kopiowania, żądania wysłane do tego serwera WWW przekroczą limit czasu: proces nie odpowiada, dopóki nie wyjdę z trybu kopiowania / przewijania.

Widziałem to zarówno w skrypcie / serwerze Ruby On Rails, jak i w narzędziu Wklej Python.

Zastanawiałem się nad włączeniem trybu rejestrowania dla moich okien, a następnie po prostu przeglądaniem / przeglądaniem tych plików dziennika jako alternatywą, ale jeśli można to kontrolować innymi sposobami (ustawienie, aktywowanie trybu kopiowania w inny sposób) jestem bardzo zainteresowany.

Moja wersja ekranu mówi:

Wersja ekranu 4.00.03 (FAU) 23-paź-06

(Zapytałem o to na quora.com, ale może to lepsze miejsce)

Odpowiedzi:


8

Przyczyną blokowania procesów jest to, że ekran zablokuje potok wyjściowy procesu, gdy jesteś w trybie wklejania kopii. Nie uważam tego za błąd, ponieważ realistycznie pytasz ekran o przechowywanie potencjalnie nieograniczonej ilości informacji w buforze podczas kopiowania / wklejania. Jeśli chcesz, aby wyjście programu przechodziło obok, ale możesz też od czasu do czasu go zatrzymać, wypróbuj to.

program > logfile 2>&1 & 
less logfile

2> i 1 połączy stderr i stdout z twojego programu. Program & wysyła program w tło. W razie potrzeby użyj przycisku fg, aby przenieść go na pierwszy plan. Teraz naciśnij F, aby podążać za końcem pliku dziennika, gdy rośnie on z mniejszą liczbą. Naciśnij ctrl + c, jeśli chcesz się zatrzymać i zbadać coś, a następnie F, aby powtórzyć. Możesz także nacisnąć i, aby ograniczyć widoczne linie w mniejszym stopniu do wyrażenia regularnego. Bardzo przydatny podczas przeglądania plików dziennika.


„ekran zablokuje potok wyjściowy procesu, gdy jesteś w trybie wklejania kopii” - może to być prawda po wygenerowaniu pewnej ilości danych wyjściowych, ale w tym przypadku nie wydaje się to prawdą: while ((1)) ; do echo $i; i=$((i+1)); sleep 0.1; done- spróbuj wywołać Kopiowanie tryb i poczekaj chwilę. Gdy wyjdziesz z trybu kopiowania, wartość i przeskoczy, pokazując, że wykonywanie trwało w tle. Jednak widziałem dane wyjściowe bloku ekranu dla niektórych procesów, więc jestem ciekawy, co dokładnie określa, czy ekran blokuje się, czy nie.
— davidA

„co dokładnie określa, czy ekran blokuje się czy nie” - określa to rozmiar bufora przewijania. Możesz go zwiększyć, aby był nieograniczony, ale zajmie to pamięć. Ale się nie zablokuje.
— san
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.