Expliquez pourquoi regarder les «emplois» ne fonctionne pas mais regarder les «ps» fonctionner?

9

jobsest ma commande préférée pour voir mes codes qui s'exécutent en arrière-plan. Afin de les vérifier dynamiquement, j'ai tendance à taper

watch 'jobs'

qui n'affiche rien. toutefois

watch 'ps'

marche parfaitement. Je fais la même erreur depuis des mois maintenant.

Je pense que comprendre pourquoi le premier ne fonctionne pas alors que le second fonctionne peut m'aider à arrêter de faire la même erreur.

Quelqu'un peut-il aider?

beaucoup
la source
1
Une question plus utile serait « comment puis-je le faire fonctionner?» Mais pourquoi (dans ce cas) est plus intéressant.
ctrl-alt-delor

Réponses:

20

jobsest une fonction intégrée qui rend compte de l'état du shell actuel: les commandes qui étaient en arrière-plan avec ce shell. watchexécute un nouveau shell pour chaque exécution, et ce shell jobsn'a aucun moyen de savoir quels watchsont les jobs du shell parent. psest une commande externe et n'a jamais utilisé l'état du shell.

muru
la source