为什么jobs 命令在shell 脚本中不起作用?

use*_*107 4 shell job-control shell-script jobs

如果我jobs -l在命令提示符下运行,它会显示正在运行的作业的状态,但如果我在文件 ./tmp.sh 下运行

#! /bin/bash
jobs -l
Run Code Online (Sandbox Code Playgroud)

它显示空输出。

为什么会这样,我如何获取有关 shell 脚本中特定作业状态的信息?

Ste*_*itt 5

jobs

显示当前 shell 管理的作业。您的脚本在其自己的 shell 内运行,因此jobs只会显示由脚本的 shell 管理的作业...

要查看此操作,请运行

#!/bin/bash
sleep 60 &
jobs -l
Run Code Online (Sandbox Code Playgroud)

要查看有关在 shell 脚本之前启动的“作业”的信息,在脚本内部,您需要将它们视为常规进程,并使用ps等。您可以将自己限制为由父 shell(启动脚本的 shell)启动的进程,如果有)通过使用$PPID脚本内的变量,并查找共享相同父 PID 的进程。

  • 谢谢。您能否回答“我如何获取有关 shell 脚本中特定作业状态的信息?” (2认同)