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 %1trimite semnalul jobului 1, iarkill 1ar viza procesul cu PID 1 (systemd). - Așteptarea ca
jobssă 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ă
nohupsaudisownse opresc.