解释一下为什么 watch 'jobs' 不起作用但 watch 'ps' 起作用?

解释一下为什么 watch 'jobs' 不起作用但 watch 'ps' 起作用?

jobs是我最喜欢的命令来查看在后台运行的代码。为了动态检查它们,我倾向于输入

watch 'jobs'

它不显示任何内容。然而

watch 'ps'

工作完美。几个月来我一直在犯同样的错误。

我认为理解为什么第一个不起作用而第二个起作用可以帮助我停止犯同样的错误。

有人可以帮忙吗?

答案1

jobs是一个报告当前 shell 状态的内置命令:该 shell 的后台命令。watch每次执行都会运行一个新的 shell,并且该 shelljobs无法知道watch父 shell 的作业是什么。ps是一个外部命令,它从未使用 shell 的状态。

相关内容