Jelaskan mengapa menonton 'pekerjaan' tidak berfungsi tetapi menonton 'ps' bekerja?

9

jobsadalah perintah favorit saya untuk melihat kode saya yang sedang berjalan di latar belakang. Untuk mengeceknya secara dinamis, saya cenderung mengetik

watch 'jobs'

yang tidak menampilkan apa pun. Namun

watch 'ps'

bekerja dengan sempurna. Saya telah melakukan kesalahan yang sama selama berbulan-bulan sekarang.

Saya pikir memahami mengapa yang pertama tidak berfungsi sementara yang kedua dapat membantu saya untuk berhenti melakukan kesalahan yang sama.

Adakah yang bisa membantu?

banyak
sumber
1
Pertanyaan yang lebih berguna adalah " bagaimana saya bisa membuatnya bekerja?" Namun mengapa (dalam hal ini) lebih menarik.
ctrl-alt-delor

Jawaban:

20

jobsadalah built-in yang melaporkan keadaan shell saat ini: perintah yang dilatar belakangi dengan shell itu. watchmenjalankan shell baru untuk setiap eksekusi, dan shell itu jobstidak memiliki cara untuk mengetahui apa watchpekerjaan shell induk. psadalah perintah eksternal dan tidak pernah menggunakan status shell.

muru
sumber