我有一些必須訪問的路徑,這是安裝的結果。
我希望通過腳本自動安裝,并且我希望該腳本在因無法訪問路徑而引發錯誤之前運行。
例如,假設腳本是
echo scripting!
mkdir -p /non_existing_path
我希望它在嘗試訪問(以任何方式)到 path 時運行/non_existing_path。
所以當我做例如
cd /non_existing_path
或者
touch /non_existing_path/my_file.txt
它總是會成功,輸出scripting!. 實際上,腳本會比這更詳細。
這可能嗎?
uj5u.com熱心網友回復:
是的,重要的情況是,呼叫例如 cd 的第 3 方(例如新的 C 程式、命令列或其他腳本)也應該受到影響,并且他們像往常一樣呼叫 cd,應該呼叫預先掛鉤腳本。
出內核:
撰寫一個可以掛載在其他檔案系統之上的保險絲檔案系統,它將在open()系統呼叫時運行fork() execve()自定義腳本。
在內核中:
撰寫內核檔案系統,該系統將公開/proc/some/interface并在底層現有句柄的“頂部”創建檔案系統。這樣的內核模塊會在open()系統呼叫時執行一個特殊的命令并轉發所有其他命令。在open()系統呼叫中,內核會寫入一些資料/proc/some/interface并等待應答。收到答復后,open()系統呼叫將繼續。
撰寫一個用戶空間惡魔,例如poll()在/proc/some/interface等待事件上的事件,然后read()事件,決議它們并執行自定義腳本。然后在腳本完成后,它會寫入/proc/some/interface同一個檔案描述符以通知內核模塊操作已完成。
uj5u.com熱心網友回復:
為什么不使用 autofs?
autofs is a program for automatically mounting directories on an as-needed basis.
https://help.ubuntu.com/community/Autofs
uj5u.com熱心網友回復:
不知道我明白。
- 即使路徑不可訪問,您是否希望腳本運行?
- 您是否希望腳本僅在路徑不可訪問時運行?
- 腳本是否應該掛載“不可訪問”的路徑?
無論如何,我認為你應該只使用一個if else 宣告
該腳本如下所示:
#!/bin/bash
if [ -d "/non_existing_path" ]
then
bash $1
else
bash $1
mkdir -p /non_existing_path
fi
讓我們假設這個腳本的名字是“myScript.sh”,而外部腳本的名字是“extScript.sh”。你會打電話給:
bash myScript.sh /home/user/extScript.sh
此腳本將檢查路徑是否存在。
如果是,執行bash /home/user/extScript.sh
如果不是,執行bash /home/user/extScript.sh并mkdir...
同樣,我不確定您是否能達到目標,但您可以根據自己的需要進行調整。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359442.html
