Aby zachować przegląd, lubię umieszczać wiele poleceń zawsze w tej samej kolejności i uruchamiać je automatycznie razem (gradle, git, baza danych, scala-REPL, jboss ...)
-H (wstrzymanie) wydaje się oznaczać, że terminal nie jest zamykany po zakończeniu, ale jak mam świadomie zakończyć taki proces? Ani trochę? W taki sposób, że mogę nadal korzystać z terminala.
Używam Xubuntu z XFCE4-terminal i Bash. Czy istnieje lepsze rozwiązanie GUI do uruchamiania wielu poleceń z możliwością kontynuowania pracy w tym oknie / karcie?
Aktualizacja: jeśli nie znasz tych komend: Jboss i grad ciągle produkują dane wyjściowe, których nie chcesz mieszać w tym samym terminalu. A czasem trzeba je przerwać za pomocą ^ C i uruchomić ponownie. Nie lubię ponownie otwierać terminów xfce4 i przechodzić do katalogu, w którym muszę działać.
Baza danych i scala-REPL są interaktywne, więc nie ma sensu uruchamiać ich w tle.
Mój aktualny skrypt startowy po prostu nawiguje do pożądanych katalogów i otwiera wszystkie karty w odpowiedniej kolejności, aby znaleźć je zawsze w tej samej pozycji, nazywając każdą kartę dla swojego celu:
xfce4-terminal -T eclipse --working-directory=/home/stefan/oximity -e "/opt/eclipse/eclipse" \
--tab -T arandr --working-directory=/home/stefan/oximity -e "arandr /home/stefan/.screenlayout/oximity.sh" \
--tab -T bash --working-directory=/home/stefan/oximity \
--tab -T gradle --working-directory=/home/stefan/oximity/med \
--tab -T git --working-directory=/home/stefan/oximity/med \
--tab -T mysql --working-directory=/opt/mini/mysql \
--tab -T jboss --working-directory=/opt/mini/jboss \
--tab -T jboss-log --working-directory=/opt/mini/jboss/standalone/log \
--tab -T scala-REPL --working-directory=/home/stefan/proj/mini/forum -e /opt/scala/bin/scala
Zaćmienie i arandr są odłączane od powłoki i uruchamiane we własnym oknie, więc tam działa parametr -e (execute). Myślę, że dla scala-REPL to działa, ponieważ jest to ostatnie polecenie na liście.
źródło
xterm -e 'stuff;bash'
?Odpowiedzi:
-H/-hold
Opcją jest, aby utrzymać otwarte okno emulator terminala raz aplikacje rozpoczęły się w nim (skorupy lub inny) został zakończony. W tym stanie nic więcej nie może się wydarzyć.Jeśli chcesz uruchomić polecenie jako zadanie powłoki interaktywnej w emulatorze terminali xfce4 i utrzymać działanie powłoki i używać jej interaktywnie po wyjściu z aplikacji
bash
, możesz użyć$PROMPT_COMMAND
zmiennej środowiskowej, abyxfce-terminal
rozpocząć interaktywna powłoka, która uruchamia dane polecenie tuż przed pierwszym monitem.W ten sposób polecenia są zadaniami tej powłoki, co oznacza, że możesz je zawiesić Ctrl-Zi wznowić później,
fg/bg
tak jakbyś wprowadził je po zachęcie tej interaktywnej powłoki.Zakłada się jednak, że nie ustawiłeś
$PROMPT_COMMAND
w swoim~/.bashrc
. Należy również pamiętać, że status wyjścia polecenia nie będzie dostępny w$?
.Aby uczynić to jeszcze bardziej podobnym do polecenia wprowadzonego w wierszu powłoki, możesz nawet dodać je do listy historii. Lubić:
W ten sposób po wyjściu
vi
możesz nacisnąć Upklawisz, aby przywołać to samovi
polecenie.Łatwiejszy sposób na napisanie:
:
rozwiązanie podane w innych odpowiedziach działa, ale ma pewne wady:
cmd
działania, to zabije to urządzenie zewnętrzne,sh
ponieważ istnieje tylko jedna grupa procesów dla obush
icmd
.cmd
$PROMPT_COMMAND
podejściu, status wyjścia polecenia nie będzie dostępny w$?
.Możesz obejść 1 powyżej, wykonując:
Lub:
W tym drugim przypadku możesz także zawiesić proces Ctrl-Z, ale nie będziesz mógł z niego korzystać
fg/bg
. Będziesz mógł ją kontynuować w tle choć wykonująckill -s CONT
na PID zcmd
.źródło
bash
skryptach, w ogóle nie ma historii, ponieważ nie ma edycji linii ani interakcji użytkownika, chyba że użyjesz jejread -e
w skrypcie (i zobaczysz, żehistory -s text
działa tam, aby zaliczyć wyświetlaną przez nią historięread -e
). Tutaj nie uruchamiamy sięhistory -s
ze skryptu, ale z$PROMPT_COMMAND
haka interaktywnej powłoki.xfce4-terminal
przynajmniej wersja 0.6.3 chce teraz dodatkowego parametru ---disable-server
- aby przejść przez środowisko. Patrz: list.debian.org/debian-user/2017/10/msg00045.html .O ile rozumiem twoje pytanie, chcesz uruchomić niektóre procesy w terminalu, będąc w stanie CtrlC je + , a następnie pozostawić otwarte okno z powłoką.
Jeśli mam rację, można to zrobić za pomocą następującego polecenia:
źródło
wiele aplikacji na
xfce4-terminal
kartachDodanie interaktywnej powłoki do każdej karty xfce
Możesz użyć tego hacka, aby dodać powłokę, jeśli / kiedy masz Ctrl+Ckartę:
To da ci następujące:
źródło
Po wyjściu z powłoki bez
-H
terminala również zostanie zamknięty. Z tą flagą terminal będzie działał, ale proces powłoki jest zamknięty i nie można go przywrócić.Myślę, że próbujesz zarchiwizować, że właśnie uruchamiasz terminal i uruchamia się środowisko programistyczne?
Możesz utworzyć skrypt powłoki i umieścić w nim wszystkie swoje polecenia. Na końcu skryptu wystarczy uruchomić powłokę:
Następnie wywołaj ten skrypt za pośrednictwem
xfce4-terminal -e /the/script
. Po wyjściu z$SHELL
zakończeniu procesu nadrzędnego (skryptu) zadania w tle otrzymają również sygnał wyjścia i wyjdź.Jeśli chcesz utrzymać je przy życiu, użyj np.
nohup jboss &
W skrypcieźródło