jobs

Wyświetla zadania uruchomione w tle bieżącej powłoki.

jobs to wbudowane polecenie powłoki (np. bash, zsh), które pokazuje listę zadań uruchomionych z bieżącej sesji terminala i działających w tle lub wstrzymanych. Jeśli wrzuciłeś coś w tło przez & albo zatrzymałeś program kombinacją Ctrl+Z, to właśnie jobs przypomni Ci, co tam jeszcze sobie chodzi (albo śpi) w danej powłoce. Nie myl go z listą procesów całego systemu — jobs widzi tylko zadania swojej powłoki.

Składnia i najważniejsze opcje

Podstawowa składnia: jobs [opcje] [%numer_zadania]

  • -l — wypisuje dodatkowo PID procesu obok zwykłych informacji o zadaniu.
  • -p — pokazuje wyłącznie PID-y (przydatne do przekazania ich dalej, np. do kill).
  • -r — ogranicza wynik tylko do zadań działających (running).
  • -s — pokazuje tylko zadania wstrzymane (stopped).
  • -n — wyświetla jedynie zadania, których status zmienił się od ostatniego powiadomienia.
  • -x polecenie — uruchamia podane polecenie, podmieniając w nim specyfikacje zadań (np. %1) na odpowiednie PID-y.

Zadania adresujesz przez %n (numer), %% lub %+ (bieżące), %- (poprzednie), a także %nazwa (zadanie zaczynające się od tekstu).

Przykłady użycia

  • jobs — wyświetla wszystkie zadania bieżącej powłoki z ich numerami i statusem.
  • jobs -l — to samo, ale z PID-ami, więc od razu wiesz, który proces ubić.
  • sleep 300 & a potem jobs — wrzucasz sleep w tło i sprawdzasz, że faktycznie tam wylądował jako zadanie [1].
  • jobs -p — zwraca same PID-y, np. kill $(jobs -p) ubije wszystkie zadania tła naraz.
  • jobs -s — pokazuje tylko to, co wstrzymałeś przez Ctrl+Z i o czym zdążyłeś zapomnieć.

Częste błędy i pułapki

Najczęstsza pomyłka to oczekiwanie, że jobs pokaże procesy z innego terminala lub całego systemu — nie pokaże. To narzędzie widzi tylko zadania swojej powłoki, więc po otwarciu nowej karty terminala lista będzie pusta. Druga pułapka: zadania w tle często giną przy zamknięciu powłoki (sygnał SIGHUP) — jeśli proces ma przeżyć wylogowanie, użyj nohup, disown albo lepiej tmux/screen. Pamiętaj też, że jobs to builtin, a nie zewnętrzny program — działa wewnątrz danej powłoki i jego dokładny zestaw opcji potrafi się różnić między bashem a zsh. Numer w nawiasie kwadratowym (np. [2]) to numer zadania, a nie PID — nie podawaj go do kill bez znaku %, bo trafisz w zupełnie inny proces.

Powiązane komendy: bg, fg, kill, disown, nohup, ps, wait.