./jobs2.sub: line 9: fg: job 1 started without job control fg: 1 Waiting for job 0 job 0 returns 0 Waiting for job 1 job 1 returns 0 Waiting for job 2 job 2 returns 0 Waiting for job 3 job 3 returns 0 Waiting for job 4 job 4 returns 0 Waiting for job 5 job 5 returns 0 Waiting for job 6 job 6 returns 0 Waiting for job 7 job 7 returns 0 [1] Running sleep 5 & [2] Running sleep 5 & [3] Running sleep 5 & [4]- Running sleep 5 & [5]+ Running ( sleep 5; exit 4 ) & 4 0 i killed it 12 [1]- Running sleep 20 & [3]+ Running sleep 20 & 0 ./jobs.tests: line 22: wait: %1: no such job ./jobs.tests: line 27: fg: no job control wait-for-pid wait-errors ./jobs.tests: line 40: wait: `1-1': not a pid or valid job spec ./jobs.tests: line 41: wait: `-4': not a pid or valid job spec wait-for-background-pids async list wait-for-background-pids async list wait for child forked wait-when-no-children wait-for-job ./jobs.tests: line 63: wait: %2: no such job 127 async list wait-for-job forked fg-bg 1 sleep 5 fg-bg 2 sleep 5 fg-bg 3 sleep 5 fg-bg 4 sleep 5 fg-bg 5 ./jobs.tests: line 90: fg: %2: no such job ./jobs.tests: line 91: bg: job 1 already in background fg-bg 6 ./jobs.tests: line 98: fg: -s: invalid option fg: usage: fg [job_spec] ./jobs.tests: line 99: bg: -s: invalid option bg: usage: bg [job_spec ...] ./jobs.tests: line 104: disown: -s: invalid option disown: usage: disown [-h] [-ar] [jobspec ...] ./jobs.tests: line 108: disown: %1: no such job ./jobs.tests: line 111: disown: %2: no such job wait-for-non-child ./jobs.tests: line 114: wait: pid 1 is not a child of this shell 127 3 -- 1 2 3 -- 1 - 2 - 3 [1] Running sleep 300 & [2]- Running sleep 350 & [3]+ Running sleep 400 & running jobs: [1] Running sleep 300 & [2]- Running sleep 350 & [3]+ Running sleep 400 & ./jobs.tests: line 131: kill: %4: no such job ./jobs.tests: line 133: jobs: %4: no such job current job: [3]+ Running sleep 400 & previous job: [2]- Running sleep 350 & after kill -STOP running jobs: [1] Running sleep 300 & [3]- Running sleep 400 & stopped jobs: [2]+ Stopped sleep 350 after disown [2]+ Stopped sleep 350 [3]- Running sleep 400 & running jobs: [3]- Running sleep 400 & stopped jobs: [2]+ Stopped sleep 350 after kill -s CONT running jobs: [2]+ Running sleep 350 & [3]- Running sleep 400 & stopped jobs: after kill -STOP, backgrounding %3: [3]+ sleep 400 & killing... done after KILL -STOP, foregrounding %1 sleep 10 done