Wstrzymujesz długo działający program w terminalu?

17

Czy istnieje kombinacja klawiszy klawiatury, której można użyć do wstrzymania programu uruchomionego w terminalu? W razie potrzeby nie zamierzam uruchamiać niczego innego w tym terminalu, gdy program jest wstrzymany. Chcę tylko zatrzymać wykonywanie programu i wznowić go później. W jaki sposób mogę to zrobić?

becko
źródło
Jaki dokładnie program?
Jobin
@Jobin Program napisany w C ++. Ale nie chcę zmieniać kodu źródłowego.
becko
Czy chcesz wznowić proces po ponownym uruchomieniu komputera?
praca w
@Jobin Nie, nie chcę restartować. Chcę wznowić później, ale nie uruchomię ponownie systemu w środku.
becko

Odpowiedzi:

17

Naciśnij Control+Z .

Spowoduje to zawieszenie procesu i powrót do powłoki. Ty może robić inne rzeczy teraz, jeśli chcesz lub można powrócić do procesu w tle wpisując %następuje Return.

Pamiętaj, że jeśli robisz to z czymś, co musi być responsywne, zamierzasz zatankować system, ale jeśli jest to coś w rodzaju nanoinstancji, wszystko powinno być w porządku.

Oli
źródło
Czy wstrzymanie procesu terminalu jest bezpieczne?
Pandya
@Pandya: Dlaczego nie?
praca w
@ Pandya Jestem pewien, że to zależy od procesu ... Jeśli coś jest bardzo wrażliwe na czas, może nie oczekiwać zawieszenia, ale większość rzeczy powinna być w porządku.
Oli
16

Jest to kontrola zadania bash

Użyj CTL-Z, aby zatrzymać zadanie.

Następnie możesz wpisać bg, aby uruchomić go w tle, jeśli jest tylko w pracy, robi to dokładnie.

Jeśli masz więcej niż jeden, możesz użyć zadań do wyświetlenia listy i użyć fg% N i bg% N do pożądanego efektu.

Przykład:

ubuntu @ ip-10-170-59-120: ~ $ find / usr -name "* .so"
/usr/lib/python2.7/dist-packages/OpenSSL/crypto.so
/usr/lib/python2.7/dist-packages/OpenSSL/SSL.so
/usr/lib/python2.7/dist-packages/OpenSSL/rand.so
/usr/lib/python2.7/dist-packages/gi/_glib/_glib.so
/usr/lib/python2.7/dist-packages/gi/_gobject/_gobject.so
/usr/lib/python2.7/dist-packages/gi/_gi.so
/usr/lib/python2.7/config/libpython2.7.so
...
^ Z
[1] + Zatrzymano find / usr -name 

ubuntu @ ip-10-170-59-120: ~ $ miejsc pracy
[1] + Zatrzymano wyszukiwanie / nazwa-usr „* .so”

ubuntu @ ip-10-170-59-120: ~ $ fg% 1
znajdź / usr -name "* .so"
/usr/lib/php5/20090626+lfs/apc.so
/usr/lib/php5/20090626+lfs/memcache.so
/usr/lib/php5/20090626+lfs/mysql.so
...

Do wszystkiego innego, co nie jest dołączone do TTY, możesz użyć SIGSTOP i SIGCONT . Na przykład, jeśli uważasz, że demon powoduje problemy, ale nie wiesz, który to jest, możesz wysłać PID SIGSTOP, to jak uderzanie pauzy, a następnie sprawdzanie zmian, OK, to nie jest to, i płukanie i powtarzanie, aż ty znajdź problem.

Mam nadzieję że to pomoże.

ppetraki
źródło
1
Dobra odpowiedź! Czy mogę dodać, że to nie tylko bash? Powłoka Korna działa w ten sam sposób.
Sergiy Kolodyazhnyy
4

Wiem, że ta odpowiedź jest nieco spóźniona, ale możesz użyć skrótu, Ctrl+saby zatrzymać swój program (jeśli chcesz przeczytać wynik lub coś takiego), możesz kontynuować korzystanie ze skrótu Ctrl+q.

Sidahmed
źródło