Skip to content

Powłoka II

Przydatne skróty klawiaturowe

Większość prostych zadań przy prace w powłoce da się obsłużyć przy pomocy przydatnych skrótów klawiaturowych. Na przykład:

  • Up, Down - przeglądanie historii poleceń,
  • Left, Right, BkSp, Del, Home, End - edycja aktualnego polecenia,
  • Tab - magiczne podpowiadanie (dokańcza ścieżki, ale potrafi też inne rzeczy),
  • Ctrl + R - wyszukiwanie poleceń w historii,
  • Ctrl + C - zakończenie aktywnego zadania,
  • Ctrl + D - zamknięcie standardowego wejścia dla aktywnego zadania, lub dla samego basha kończące się zakończeniem basha.

Więcej informacji na ten temat można przeczytać w dokumentacji: Command Line Editing, Using History Interactively.

Informacje o procesach

System umożliwia nam podgląd informacji o działających aktualnie procesach. Przydatne wersje polecenia ps:

  • ps - procesy użytkownika związane z bieżącą konsolą;
  • ps u - procesy związane z różnymi konsolami;
  • ps x - wszystkie nasze procesy, także niezwiązane z konsolą;
  • ps ux - jak wyżej, wraz dodatkowymi informacjami, np. o właścicielu procesu i czasie startu;
  • ps ax - wszystkie procesy wszystkich osób na serwerze;

Informacje o procesach pochodzą z folderu /proc

Polecenie pgrep pozwala wyszukiwać procesy zgodnie z różnymi kryteriami.

Wyświetlanie w trybie interaktywnym:

Polecenia top i htop pozwalają interaktywnie przeglądać listę procesów. Aby uzyskać pomoc w trakcie działania któregoś z tych programów, wciskamy jeden z klawiszy h lub ?. Wyjście odbywa się przy pomocy q. htop jest bardziej przejrzysty i wygodny w obsłudze niż top, ale ten drugi z kolei oferuje możliwość zapisu raportu do pliku. Poniższe akapity są poświęcone programowi top.

W celu zobaczenia procesów należących wyłącznie do użytkownika user1 możemy użyć komendy: top -u user1. Alternatywnie, w trakcie działania programu top wciskamy klawisz u, wpisujemy user1 i akceptujemy. Jeżeli nie napiszemy żadnej nazwy, to zobaczymy procesy wszystkich użytkowników. Kończymy działanie danego procesu wciskając k i podając jego PID. Przy pomocy polecenia top -p pid1, pid2, ... (np. top -p 1, 3) możemy śledzić wyłącznie procesy o podanych PIDach (w przykładzie: 1 i 3). Klawisze z i b wpływają na oznaczenie aktywnych procesów.

Procesy możemy sortować względem wybranej kolumny. Domyślnie posortowane są po procentowym zużyciu procesora (klawisz P). Jeśli chcemy ułożyć je po zużyciu pamięci, to używamy klawisza M. W przypadku innego sortowania używamy O lub F, natomiast R odwraca sortowanie. Możemy także decydować o wyborze kolumn do wyświetlenia (f) i ich kolejności (o). Klawisz c (jak i opcja -c przy uruchomieniu) sprawia, że możemy przełączać się między mniej i bardziej szczegółowym widokiem komend związanych z poszczególnymi procesami. Przy pomocy l, t i m można włączać lub wyłączać podsumowania nad listą procesów.

Domyślny czas, po którym odświeżana jest lista procesów wynosi 3 sekundy. Aby go zmodyfikować, używamy albo komendy top -d liczba_sekund, albo klawiszy d lub s w trakcie działania polecenia top. Jeżeli chcemy natychmiast poznać aktualny stan listy procesów, to używamy enter bądź spacji.

Zarządzanie zadaniami w bashu - jobs

Przydatne skróty klawiaturowe:

  • Ctrl+Z - zatrzymanie aktywnego zadania (wykonywanie procesu zostaje zatrzymane, ale można je później wznowić).
  • Ctrl+C - zakończenie aktywnego zadania.
  • Ctrl+D - zamknięcie standardowego wejścia dla aktywnego zadania, lub dla samego basha kończące się zakończeniem basha.

Multitasking:

Bash pozwala kontrolować pracę zadań uruchomionych w tle w danej powłoce.

Na przykład używając Ctrl+Z możemy zawiesić działanie programu:

gutowski@student:~$ sleep 100
^Z
[1]+  Stopped                 sleep 100

Żeby uruchomić polecenie w tle, należy linijkę z poleceniem zakończyć znakiem &. Po uruchomieniu w tle (<polecenie> &) wyświetla się numer zadania oraz PID. Można uruchomić kilka komend w tle używając operatora & jako separatora.

gutowski@student:~$ sleep 100 & sleep 5 &
[2] 3331
[3] 3332

Listę zadań możemy wyświetlić poprzez wykonanie jobs. Przykładowo:

[1]+  Stopped                 sleep 100
[2]   Running                 sleep 100 &
[3]-  Done                    sleep 5 &

Pierwsze zadanie jest zatrzymane. Drugie zadanie działa w tle, natomiast zadanie 3 zakończyło się, więc przy kolejnym wywołaniu już się nie pojawi na liście. Wstrzymane zadanie możemy wznowić:

  • bg %1 - wystartuje zadanie pierwsze pozostawiając je działające w tle,
  • fg %2 - przywróci zadanie pierwsze na pierwszym planie,

Więcej informacji na temat kontroli zadań wbudowanej w bash można przeczytać w dokumentacji: Job Control Basics, Job Control Builtins.

Sygnały i przerywanie zadań

Wiemy, że mamy możliwość przerywania, wstrzymywania i wznawiania uruchomionych programów, gdy wciśniemy Ctrl+C, czy Ctrl+Z. Jak jest to realizowane?

Mechanizm, który pozwala na takie zachowanie, to komunikacja poprzez sygnały. Działający program wykonuje operacje zgodnie ze swoim kodem. Jednakże w momencie otrzymania sygnału wywołuje się specjalne zachowanie -- zależne od sygnału.

Po wciśnięciu klawiszy Ctrl+C wyemitowany zostaje sygnał SIGINT (który domyślnie powoduje przerwanie programu), z kolei za kombinacją Ctrl+Z, kryje się sygnał SIGTSTP (wstrzymujący działanie programu).

Polecenie kill pozwala na wysłanie wybranego sygnału do dowolnego programu lub zadania. Wpisując kill w powłoce wywołujesz polecenie wbudowane, zobacz help kill.

  • kill %5 - zatrzymaj (SIGTERM) piąte zadanie,
  • kill <PID> - zatrzymaj proces o wskaznaym PID,
  • kill -s SIGINT 4493 - przerwij (SIGINT) proces o PID 4493,
  • kill -9 4493 - zabij proces 4493 (SIGKILL).

Lista dostępnych sygnałów jest dostępna pod man 7 signal

Jeżeli naszym celem jest zakończenie od razu wszystkich procesów związanych z konkretną komendą, to możemy użyć polecenia killall , np.

killall sleep

Byobu

Polecenie byobu uruchamia emulator środowiska okienkowego w terminalu. Pozwala ono uruchamiać i zarządzać równoległymi sesjami powłoki. Dodatkowo, narzędzie to pozwala utrzymywać persystentną sesję - odłączoną sesję byobu można przywrócić uruchamiając byobu ponownie.

Przydatne skróty klawiaturowe:

  • F6 - rozłącza sesję, zostawiając ją działającą w tle,
  • F2 - uruchamia nową powłokę w zakładce,
  • F3, F4 - nawigowanie lewo/prawo pomiędzy zakładkami,
  • Shift+F2, Ctrl+F2 - uruchamia nową powłokę w okienku podzielonym na pół,
  • Shift+F3, Shift+F4 - nawigowanie pomiędzy fragmentami podzielonej zakładki,
  • F7 - pozwala przewijać historię powłoki.

Więcej informacji (razem z filmem demonstracyjnym) znajduje się na stronach projektu Byobu.

Gnome Terminal

Polecenie gnome-terminal uruchamia graficzny interfejs powłoki. Ustawienia wyświetlania (czcionka, kolory, skróty kalwiaturowe) dostępne w ustawieniach aplikacji.

Przydatne skróty klawiaturowe:

  • Skróty Shift+PgUp, Shift+PgDn można wykorzystać do przewijania historii powłoki,
  • Skrót Ctrl+Shift+T otwiera nową zakładkę,
  • Skróty Ctrl+PgUp, Ctrl+PgDn służą do nawigaci lewo/prawo pomiędzy zakładkami,
  • Skrót Ctrl+Shift+V wkleja tekst ze schowka do powłoki. Można wykorzystać myszkę do zaznaczenia fragmentów wyświetlanego tekstu. Dwuklik zaznacza słowo. Trójklik zaznacza wiersz.
  • Skrót Ctrl+Shift+C kopiuje zaznaczony fragmet do schowka.

Więcej informacji znajduje się na stronach projektu Gnome Terminal.