[ubuntu]檔案放入資料夾 自動執行

參考網址:AI

在Ubuntu中,要讓檔案放入資料夾後自動執行,可以使用udev規則。 這是一個強大的系統工具,可以監聽檔案系統事件,並根據規則觸發自定義動作。 具體步驟如下:

  1. 1. 創建udev規則文件:

    在`/etc/udev/rules.d/目錄下創建一個新的.rules文件,例如99-custom-script.rules`。 這個文件將包含你的自定義規則。

  2. 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. 3. 創建執行腳本:

    創建一個腳本,例如script.sh,並賦予執行權限(chmod +x script.sh)。 這個腳本將包含你希望執行的具體操作。

  4. 4. 應用規則:

    執行sudo udevadm control --reload-rules && sudo udevadm trigger來重新載入規則並觸發。

範例:

假設你想在`/home/user/my_folder中新增檔案後,將其複製到/home/user/backup_folder`,可以這樣做:

  1. 99-custom-script.rules:

程式碼

    ACTION=="add", SUBSYSTEM=="file", KERNEL=="[0-9]*", ATTR{dir}=="/home/user/my_folder", RUN+="/home/user/my_script.sh"
  1. my_script.sh:

程式碼

    #!/bin/bash
    cp "/home/user/my_folder/$FILE" "/home/user/backup_folder/"
  1. 執行:

程式碼

    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

本篇發表於 Linux系統。將永久鏈結加入書籤。