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