Wiem już, że naciśnięcie ctrl+z
zatrzymuje aplikację, a następnie mogę wysłać aplikację do tła za pomocą bg
polecenia, ale oznacza to, że aplikacja jest zatrzymana przez krótki czas.
Jak wysłać aplikację bezpośrednio w tło, nie przerywając jej?
shell
command-line
background-process
jobs
trusktr
źródło
źródło
ctrl+z
a następnie uruchamiania poleceniabg
. Czy istnieje jedna kombinacja klawiszy, aby wysłać aplikację w tło?Odpowiedzi:
Wysłanie aplikacji z pierwszego planu do tła wymaga współpracy zarówno terminala, jak i powłoki. Terminal nie może tego zrobić sam, ponieważ powłoka musi ustawić grupę procesów pierwszego planu. Powłoka nie może tego zrobić sama, ponieważ terminal musi przetworzyć naciśnięcie klawisza (powłoka nie jest na pierwszym planie, więc nie może odebrać naciśnięcia klawisza).
Zbliżeniem jest bardzo szybkie przesłanie aplikacji do tła. W końcu aplikacja dzieli czas procesora z innymi, a przerwa wynosząca kilka setnych sekundy nie powinna mieć znaczenia. (Dzieje się tak w przypadku aplikacji działających w czasie rzeczywistym, więc należy uruchomić je w tle.) Używam powiązania powłoki dla Ctrl+, Zktóre wysyła zadanie pierwszoplanowe do tła. W ten sposób naciśnięcie Ctrl+ Z Ctrl+ Zwysyła zadanie do tła przy minimalnym czasie zawieszenia.
Oto moje wiązanie zsh, które również „w tle” wpisuje na wpół wpisane polecenie, gdy wiersz polecenia nie jest pusty .
W języku angielskim dla odbiorców niebędących użytkownikami Zsh:
Zdefiniuj funkcję powłoki, która wykonuje następujące czynności:
Powiąż tę funkcję z Ctrl+ Z.
Jeśli chcesz tylko zachowanie w tle, niezależnie od tego, czy wiersz poleceń jest pusty:
Nie wiem, czy możesz zrobić to samo w bash. Powinno to być tak proste, jak
bind -x '"\C-z": bg'
tylko, że bash pozostawia znak tty stop na miejscu, więc nigdy nie dostaje Ctrl+ Zjako danych wejściowych.źródło
Możesz wykonać zadanie w tle, dodając
&
po nim.Na przykład
tail -f /var/log/messages &
natychmiast wykona zadanie w tle.Jak zawsze widać, jakie zadania wykonałeś w tle za pomocą
jobs
polecenia.To oczywiście zakłada, że jeszcze nie uruchomiłeś polecenia.
źródło
ctrl+z
a następnie wykonaćbg
w wierszu polecenia, aby aplikacja działała w tle. Ale między naciśnięciemctrl+z
a uruchomieniembg
istnieje przedział czasowy, w którym aplikacja jest całkowicie wstrzymana. Nie chce tego Jak wysłać go natychmiast do tła ?Tło polecenia wykonuje się, dodając do polecenia znak „i”.
Jeśli jest już uruchomiony, jedyną opcją jest jego zatrzymanie, a następnie tło.
źródło