參考網址:AI
在Ubuntu中,要讓檔案放入資料夾後自動執行,可以使用udev規則
。 這是一個強大的系統工具,可以監聽檔案系統事件,並根據規則觸發自定義動作。 具體步驟如下:
-
1. 創建udev規則文件:
在`/etc/udev/rules.d/目錄下創建一個新的
.rules文件,例如
99-custom-script.rules`。 這個文件將包含你的自定義規則。
-
2. 編寫udev規則:
規則的格式通常是 ACTION=="add", SUBSYSTEM=="file", ATTR{name}=="your_file_name", RUN+="/path/to/your/script.sh"
。
-
ACTION=="add"
: 觸發條件,這裡表示當有新檔案新增時。
-
SUBSYSTEM=="file"
: 監聽對象,這裡表示檔案。
-
ATTR{name}=="your_file_name"
: 檔案名稱的條件,可以根據實際情況修改。
-
RUN+="/path/to/your/script.sh"
: 觸發時要執行的指令,指向你的腳本路徑。
-
3. 創建執行腳本:
創建一個腳本,例如script.sh
,並賦予執行權限(chmod +x script.sh
)。 這個腳本將包含你希望執行的具體操作。
-
4. 應用規則:
執行sudo udevadm control --reload-rules && sudo udevadm trigger
來重新載入規則並觸發。
範例:
假設你想在`/home/user/my_folder中新增檔案後,將其複製到
/home/user/backup_folder`,可以這樣做:
-
99-custom-script.rules
:
程式碼
ACTION=="add", SUBSYSTEM=="file", KERNEL=="[0-9]*", ATTR{dir}=="/home/user/my_folder", RUN+="/home/user/my_script.sh"
-
my_script.sh
:
程式碼
#!/bin/bash
cp "/home/user/my_folder/$FILE" "/home/user/backup_folder/"
-
執行:
程式碼
sudo udevadm control --reload-rules && sudo udevadm trigger
注意事項:
-
udev
規則的監聽範圍是整個系統,因此需要謹慎設定,避免誤觸其他檔案。
-
可以利用`udevadm info -a -p $(udevadm info -q path -n /path/to/your/file)`來查詢檔案的詳細資訊,協助編寫規則。
-
執行腳本的用戶是
root
,如果需要其他用戶權限,可以使用sudo -u user command
。