Shell
為什麼jobs命令在shell腳本中不起作用?
如果我
jobs -l
在命令提示符下執行,它會顯示正在執行的作業的狀態,但如果我在文件 ./tmp.sh 下執行#! /bin/bash jobs -l
它顯示空輸出。
為什麼會這樣?如何在 shell 腳本中獲取有關特定作業狀態的資訊?
jobs
顯示目前 shell 管理的作業。您的腳本在其自己的外殼中執行,因此
jobs
只會顯示由腳本外殼管理的作業…要查看此操作,請執行
#!/bin/bash sleep 60 & jobs -l
要查看有關在 shell 腳本之前啟動的“作業”的資訊,在腳本內部,您需要將它們視為正常程序,並使用
ps
等。您可以將自己限制為由父 shell(啟動腳本的 shell)啟動的程序,如果有的話)通過使用$PPID
腳本中的變數,並尋找共享相同父 PID 的程序。