Jak mogę uruchomić polecenie z terminala bez jego blokowania?


45

W terminalu Ubuntu uruchamiam wiele programów, ale chciałbym móc korzystać z terminala po otwarciu programu. Jak mogę umieścić programy w tle, aby nie musiałem otwierać kolejnego okna?

Odpowiedzi:


60

Istnieją różne sposoby uruchamiania programu terminalowego i dalszego korzystania z terminala:

  • Możesz otworzyć kolejną kartę terminala (kliknij prawym przyciskiem myszy, a następnie wybierz „Otwórz nową kartę”).
  • Możesz dołączyć &do uruchamianego polecenia. Pamiętaj, że nie zobaczysz tekstu wysyłanego do terminala, takiego jak komunikaty o błędach.
  • Możesz wpisać Ctrl- Za następnie uruchomić bg. Ma to taki sam efekt jak bieganiecommand &
  • Możesz uruchomić, nohup command &a następnie naciśnij klawisz Enter. (Dzięki ccpizza , patrz komentarze poniżej.)

Jednak naciśnięcie Alt- F2a następnie uruchomienie polecenia z GUI jest zwykle uważane za najlepszą praktykę - w ogóle nie ma terminala!

Zauważ, że podczas używania &(nie nohup) zamknięcie terminalu spowoduje zakończenie aplikacji, chyba że uruchomisz ją disownpóźniej .

EDYCJA: Wygląda na to, że używanie nohupczasami pozostawia niewielkie odchody w folderze domowym. To, co normalnie byłoby zalogowane do terminala, najwyraźniej jest zapisywane w pliku w ~ /.

~~

Prostym sposobem uruchomienia programu w tle jest program-name & disownprzeniesienie cię do terminala, który można zamknąć bez zabijania procesu.


4
Aby zapobiec zabiciu procesu potomnego po zamknięciu terminala, możesz uruchomić aplikację jako nohup firefox&.
ccpizza,

Fajne! Nie wiedziałem o tym (ale po eksperymentach terminal jest nadal „blokowany”)!
WindowsEscapist,

nie jest „zablokowany”, tylko „wygląda” zablokowany, jeśli wpiszesz enter po pojawieniu się monitu.
ccpizza,

Ach, wcześniej tego nie zauważyłem.
WindowsEscapist

program-name & disownto fajne rozwiązanie
Doktor Henry

8

Możesz uruchomić polecenie za pomocą & po.

Na przykład:

piorun i

Zobacz tutaj, aby uzyskać więcej informacji.


Działa to tylko do momentu zamknięcia okna terminala, po zamknięciu okna program zostanie zakończony
kurdtpage

6

Możesz użyć setsiddo uruchomienia programu w nowej sesji z dodatkiem, aby &>/dev/nullnie otrzymywać żadnych komunikatów dziennika.

Tak by było

setsid program-name &>/dev/null


Fajne. Proces musi być uruchomiony po wylogowaniu użytkownika i zamknięciu bieżącej sesji.
Michaił Moskalev,


0

Możesz uruchomić go w wirtualnym terminalu, takim jak tmux( screenale słyszałem, że nie jest już utrzymywany)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux może zrobić o wiele więcej, na przykład:

  • przenieś wirtualny terminal do innego terminala
  • udostępnij wirtualny terminal w kilku terminalach (inni użytkownicy mogą zobaczyć, co robisz ;-))
  • podziel „ekran”, aby mieć kilka terminali.
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

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.