Shell

為什麼jobs命令在shell腳本中不起作用?

  • February 5, 2017

如果我jobs -l在命令提示符下執行,它會顯示正在執行的作業的狀態,但如果我在文件 ./tmp.sh 下執行

#! /bin/bash
jobs -l

它顯示空輸出。

為什麼會這樣?如何在 shell 腳本中獲取有關特定作業狀態的資訊?

jobs

顯示目前 shell 管理的作業。您的腳本在其自己的外殼中執行,因此jobs只會顯示由腳本外殼管理的作業…

要查看此操作,請執行

#!/bin/bash
sleep 60 &
jobs -l

要查看有關在 shell 腳本之前啟動的“作業”的資訊,在腳本內部,您需要將它們視為正常程序,並使用ps等。您可以將自己限制為由父 shell(啟動腳本的 shell)啟動的程序,如果有的話)通過使用$PPID腳本中的變數,並尋找共享相同父 PID 的程序。

引用自:https://unix.stackexchange.com/questions/284129