use*_*107 4 shell job-control shell-script jobs
如果我jobs -l
在命令提示符下运行,它会显示正在运行的作业的状态,但如果我在文件 ./tmp.sh 下运行
#! /bin/bash
jobs -l
Run Code Online (Sandbox Code Playgroud)
它显示空输出。
为什么会这样,我如何获取有关 shell 脚本中特定作业状态的信息?
jobs
显示当前 shell 管理的作业。您的脚本在其自己的 shell 内运行,因此jobs
只会显示由脚本的 shell 管理的作业...
要查看此操作,请运行
#!/bin/bash
sleep 60 &
jobs -l
Run Code Online (Sandbox Code Playgroud)
要查看有关在 shell 脚本之前启动的“作业”的信息,在脚本内部,您需要将它们视为常规进程,并使用ps
等。您可以将自己限制为由父 shell(启动脚本的 shell)启动的进程,如果有)通过使用$PPID
脚本内的变量,并查找共享相同父 PID 的进程。