我有一個用戶定義的命令,稱爲lock
。執行該命令後,系統將被鎖定。如果我們只給出正確的密碼,那麼只會發生命令 提示。現在,我想從後臺運行的腳本 執行lock
命令。如果我們執行腳本lock
命令執行,但它不鎖定當前終端。它只鎖定背景bash。它不會在當前的bash中執行。如何解決這個問題呢?使父進程中的子進程執行shell命令(鎖殼)
謝謝。
我有一個用戶定義的命令,稱爲lock
。執行該命令後,系統將被鎖定。如果我們只給出正確的密碼,那麼只會發生命令 提示。現在,我想從後臺運行的腳本 執行lock
命令。如果我們執行腳本lock
命令執行,但它不鎖定當前終端。它只鎖定背景bash。它不會在當前的bash中執行。如何解決這個問題呢?使父進程中的子進程執行shell命令(鎖殼)
謝謝。
之前使用調試陷阱從命令提示執行的命令,可以執行命令:
trap 'command' DEBUG
這將每個命令之前執行命令。系統鎖定後,更改後臺腳本以創建某種標誌文件。並讓你的命令檢查該文件是否存在。像這樣:
if [[ -f lockfile ]]
then p=
while [[ "$p" != secret ]]
do echo -n password:
read p
done
rm -f lockfile
fi
我不是說它是安全的。
另一種方法:
運行兩個shell。下層shell循環詢問密碼,然後運行上層。上殼是一個正常的殼。當後臺任務想要鎖定終端時,後臺任務會終止上層shell,並將控制權返回給下層shell。
你不能。後臺進程沒有任何方法來控制前臺shell。它們是分開的過程。後臺腳本不能在前臺進程中設置變量。 –
因此,無法從子shell執行父shell中的命令。這樣對嗎?謝謝... – Mohan
沒錯。與其他任何兩個過程一樣,它們是完全獨立的過程。 –