jobs, bg și fg în Linux / Bash

Procese și monitorizare Bash built-in (POSIX)

Gestionează joburile shell-ului: comenzi pornite în fundal, suspendate cu Ctrl+Z și aduse înapoi în prim-plan.

Sintaxă comandă
comandă &
jobs [-l]
bg [%n]
fg [%n]

Ce face jobs, bg și fg

Un job este o comandă (sau un pipeline) pornită din shell-ul curent. Cu & la final, comanda pornește direct în fundal. O comandă care rulează în prim-plan poate fi suspendată cu Ctrl+Z; apoi bg o continuă în fundal, iar fg o aduce înapoi în prim-plan.

jobs afișează lista joburilor cu numărul lor între paranteze drepte. Semnul + marchează jobul curent (cel folosit implicit de fg și bg), iar - pe cel anterior. Te referi la un job cu %1, %2 etc., inclusiv în kill %1.

Joburile aparțin shell-ului: dacă închizi terminalul, primesc SIGHUP și se opresc. Pentru a le păstra, folosește nohup, disown sau tmux.

Opțiuni și argumente

Opțiune / Parametru Descriere
comandă & Pornește comanda în fundal; shell-ul afișează [număr_job] PID.
Ctrl+Z Suspendă (oprește temporar) comanda din prim-plan.
jobs -l Afișează și PID-ul fiecărui job.
bg %n Continuă în fundal jobul suspendat n.
fg %n Aduce jobul n în prim-plan.
wait [%n] Așteaptă terminarea joburilor din fundal (util în scripturi).
disown %n Scoate jobul din lista shell-ului, ca să nu primească SIGHUP la închidere.

Exemple

Exemplul 1: Două comenzi în fundal și lista joburilor

Pornim două comenzi în fundal, le vedem cu jobs, apoi așteptăm terminarea lor cu wait.

sleep 1 &
sleep 2 &
jobs
wait
echo "Toate joburile s-au terminat"

Rezultat

[1]-  Running                 sleep 1 &
[2]+  Running                 sleep 2 &
Toate joburile s-au terminat

Exemplul 2: Suspendare cu Ctrl+Z, continuare cu bg, revenire cu fg

Ai pornit o arhivare lungă în prim-plan. O suspenzi cu Ctrl+Z, o continui în fundal cu bg și, mai târziu, o aduci înapoi cu fg.

tar -czf poze_iasi.tar.gz Poze/
^Z
bg
jobs
fg %1

Ieșire în terminal

[1]+  Stopped                 tar -czf poze_iasi.tar.gz Poze/
[1]+ tar -czf poze_iasi.tar.gz Poze/ &
[1]+  Running                 tar -czf poze_iasi.tar.gz Poze/ &
tar -czf poze_iasi.tar.gz Poze/

Greșeli frecvente

  • Confuzia între numărul jobului și PID: kill %1 trimite semnalul jobului 1, iar kill 1 ar viza procesul cu PID 1 (systemd).
  • Așteptarea ca jobs să arate procesele pornite din alt terminal: lista conține doar joburile shell-ului curent.
  • Închiderea terminalului cu joburi în fundal, crezând că vor continua; fără nohup sau disown se opresc.

Comenzi înrudite

  • nohup: Pornește o comandă care continuă să ruleze și după ce închizi terminalul sau sesiunea SSH.
  • kill: Trimite un semnal de control sau oprire către un proces specificat prin ID (PID).
  • ps: Afișează o captură instantanee (snapshot) a proceselor active din sistem.