Kategorie | Linux, Poradniki

  

Kontrolowanie zadań w terminalu

Opublikowano 29 maja 2010 przez Franek

Kiedy pracuję w terminalu często wykonuję kilka czynności na raz, np mam uruchomione irrsi, mc, podręcznik manuala i vim na którym edytuję jakiś plik konfiguracyjny. Abym mógł tak pracować muszę uruchomić kilka terminali/zakładek, lub korzystać ze screen, nie zawsze jest to wygodne rozwiązanie. Można jednak za pomocą jednego terminala uruchomić wiele aplikacji/komend, jedynym ograniczeniem jest tylko fakt iż jedna aplikacja może działać na pierwszym planie, reszta działa w tle.

Przykład: uruchamiam podręcznik dla squid3:
man squid3
Po czym odnajduję interesującą mnie informację, i zamierzam edytować plik konfiguracyjny squid3, więc wduszam ctrl+z i otrzymuje coś takiego:
[1]+ Stopped man squid3
Zatrzymało to proces man, system nie przydziela mu czasu procesora, a ja mam wolny prompt, więc mogę uruchomić vim aby edytować konfigurację:
vim /etc/squid3/squid.conf
Po wprowadzeniu zmian i ich zapisaniu mogę zastopować również vim (ctrl+z)

Teraz sprawdzam jakie zadania mam uruchomione w tle, robię to poleceniem jobs i otrzymuję coś takiego:
[1] Stopped man squid3
[2]- Stopped vim /etc/squid3/squid.conf
[3]+ Stopped mc

Teraz jeśli chce uruchomić zastopowany proces mc, posłużę się poleceniem fg i wpisując:
fg mc
lub:
fg 3

Jeśli wpiszę fg bez argumentu, to uruchomi się ostatnio zatrzymany proces.

Oprócz przywoływania zastopowanych aplikacji, mogę również przełączać już uruchomione programy aby działały w tle. Jest to szczególne przydatne kiedy z konsoli uruchamiam aplikację działającą w trybie graficznym, dla przykładu posłużę się gedit:

Uruchamiam gedit:
gedit
Po czym go zatrzymuję (ctrl+z) i otrzymuję coś takiego:
[4]+ Stopped gedit

Ale jak już wcześniej pisałem, ctrl+z zatrzymuje procesy, gedit jest uruchomiony, lecz zatrzymany i nie reaguje na nic, dlatego przełączam go aby działał w tle za pomocą polecenia bg i otrzymuję coś takiego:
[4]+ gedit &

Na liście którą wyświetla polecenie jobs, jest wyszczególnione które aplikacje są zatrzymane, a które uruchomione:
[1] Stopped man squid3
[2]- Stopped vim /etc/squid3/squid.conf
[3]+ Stopped mc
[4] Running gedit &

Aby od razu przełączyć program na działanie w tle uruchamiam go z & na końcu, dla przykładu:
gedit &

  

3 Comments For This Post

  1. krefik Says:

    Prawdziwą potęgę obsługi zadań w powłoce można zauważyć kiedy zaprzęgnie się do pracy także potoki.
    Wyobraźmy sobie jakieś upierdliwe zadanie które odpaliliśmy, a które po odpaleniu okazuje się żądać 2^37 razy potwierdzenia. Oczywiście można spędzić dwa miesiące przy komputerze naciskając ‘y’ (przy założeniu że klawisz wytrzyma), ale można też:
    1. zatrzymać zadanie ^Z
    2. stworzyć potok:
    # yes | fg > dupajasia.log
    3. włala. można iść na piwko

  2. Franek Says:

    @krefik dzięki za rzeczowy i przydatny komentarz :)

  3. Sławek Says:

    @krefik : O takim zastosowaniu nie wiedziałem. Jest jeden problem: skąd powłoka ma się domyśleć, które zadanie ma być na pierwszym planie?

Leave a Reply

Polityka komentarzy

     
     
Green Dog Says

MiniBlog