Przenieś działający program do tła w bash

10

Jeśli uruchamiam program w trybie bash, mogę go zawiesić, naciskając Ctrl+ Z. Jeśli chcę pozostawić uruchomiony program, mogę użyć bgpolecenia. Czy jest jakiś sposób na bezpośrednie umieszczenie programu w tle, bez konieczności pisania bg?

Wyjaśnienie : Chcę umieścić program w tle, gdy jest już uruchomiony, bez zawieszania go.

Kalle Elmér
źródło
2
To nie jest duplikat. Nie chcę, aby program działał, gdy okno terminala jest zamknięte i nie mogę wpisać innego polecenia. Chcę umieścić proces w tle, gdy jest już uruchomiony.
Kalle Elmér,
1
tak, to nie jest duplikat, otwórz to ponownie.
saji89
Dziękuję wszystkim, którzy pomogli w ponownym otwarciu tego .. @Kalle, Pytanie zostało ponownie otwarte.
saji89
Wielkie dzięki! Jeśli chodzi o znalezienie odpowiedzi na pytanie, wydaje mi się, że jedynym sposobem jest najpierw je zawiesić, a następnie tło.
Kalle Elmér

Odpowiedzi:

4

Nie sądzę, że można przenieść działający program na tło (gdy proces jest nadal uruchomiony).
Istnieje jednak aplikacja o nazwie GNU-Screen , za pomocą której można uruchamiać dowolną liczbę aplikacji konsolowych - interaktywne powłoki poleceń, aplikacje oparte na klątwach, edytory tekstu itp. - w ramach jednego terminala.
Oto fajny samouczek na temat GNU-Screen.
Pamiętaj, że nie robi dokładnie tego, o co prosiłeś, ale i tak służy temu celowi.
Przykład:
Oto implementacja tego, o co prosiłeś za pomocą GNU-Screen.

  1. Uruchom screen
    Otrzymasz szczegółowe informacje o oprogramowaniu. Naciśnij powrót.
  2. Teraz zobaczysz swój normalny terminal, ale jest to okno ekranu. Wpisz dowolne polecenie vlc. Rozpocznie się proces w tym oknie.
  3. Teraz, aby otworzyć nowe okno, wpisz Ctrl+, Aa następnie C. Możesz tutaj uruchomić nowe polecenie. Pamiętaj, że proces rozpoczęty w oknie 1 jest nadal uruchomiony.
  4. Aby odłączyć się od ekranu, naciśnij Ctrl+, Aa następnie D. Teraz powrócisz do swojego starego termianlu, jednak każdy proces, który uruchomiłeś z ekranu, nadal będzie działał.
zapalać
źródło
4

Według mojej najlepszej wiedzy, możesz go uruchomić, a następnie dołączyć & po nim w następujący sposób:myprogram &

Jednak mogę się tutaj bardzo mylić.

[EDYCJA]: Przyjrzyj się temu bliżej, jeśli uruchomisz powyższe, aplikacja zostanie zamknięta po zamknięciu terminalu. Jeśli chcesz, aby aplikacja działała w tle, to o ile wiem, aplikacja musi być napisana w sposób, który obsługuje zachowanie demona.

[EDYCJA 2]: nohup command & wydaje się być bliżej tego, co chcesz osiągnąć. Nohup pozwoli na uruchomienie aplikacji i zarówno zignoruje jej dane wejściowe, jak i przekieruje dane wyjściowe do pliku zwanego nohup.outw bieżącym katalogu.

NlightNFotis
źródło
Naprawdę nie dbam o to, czy jest zamknięty, kiedy zamykam okno terminala. Wszystko czego szukam to skrót klawiaturowy w bash, który działa jak Ctrl + Z, ale zachowa proces w tle, zamiast go zawieszać.
Kalle Elmér
0

To może nie być prawdziwa odpowiedź. Zastanawiam się, czym różni się Bash między Ubuntu z MSYS.

Korzystam z MSYS i po uruchomieniu Application/Chrome &natychmiast przechodzi do procesu w tle. Mogę użyć bashu MSYS, gdy następny monit zacznie migać.

I czy są to pytania Przenieś działający program na tło o podobnych celach?

Edward Chan JW
źródło