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?

Salvador Dali
źródło

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.

WindowsEscapist
źródło
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.

Viertaxa
źródło
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

Rumid
źródło
Fajne. Proces musi być uruchomiony po wylogowaniu użytkownika i zamknięciu bieżącej sesji.
Michaił Moskalev,
1

Za pomocą screenpolecenia można otworzyć wiele sesji terminala za pomocą jednego okna i stuknąć

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (uruchom nowy ekran)

[Your command]

Ctrl+A d opuścić ekran ... i tak dalej

https://linuxize.com/post/how-to-use-linux-screen/

Ahmed Ismail
źródło
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/

Sebastien DA ROCHA
źródło