inotify 是 Linux 系統中的一個內核子系統,它可以監控文件系統事件,如文件的創建、修改、刪除等。通過 inotify,你可以實現各種自動化任務,例如自動備份、自動編譯、自動部署等。以下是如何使用 inotify 實現自動化任務的基本步驟:
inotify-tools首先,你需要安裝 inotify-tools,這是一個常用的 inotify 工具集。
在 Debian/Ubuntu 系統上:
sudo apt-get install inotify-tools
在 CentOS/RHEL 系統上:
sudo yum install inotify-tools
接下來,編寫一個腳本來監控文件系統事件并執行相應的任務。以下是一個簡單的示例腳本,它監控一個目錄中的文件變化,并在文件被修改后自動備份到另一個目錄。
#!/bin/bash
# 監控的目錄
SOURCE_DIR="/path/to/source"
# 備份的目錄
BACKUP_DIR="/path/to/backup"
# 使用 inotifywait 監控目錄
inotifywait -m -r -e modify,create,delete --format '%w%f' "$SOURCE_DIR" | while read FILE
do
# 獲取文件名
FILENAME=$(basename "$FILE")
# 構建備份路徑
BACKUP_PATH="$BACKUP_DIR/$FILENAME"
# 執行備份操作
cp "$FILE" "$BACKUP_PATH"
echo "Backup completed: $FILE -> $BACKUP_PATH"
done
將上述腳本保存為 backup_script.sh,然后賦予執行權限并運行:
chmod +x backup_script.sh
./backup_script.sh
為了使腳本在系統啟動時自動運行,你可以將其添加到系統的啟動腳本中。例如,在 systemd 中,你可以創建一個服務單元文件。
創建一個新的 systemd 服務文件:
sudo nano /etc/systemd/system/backup_service.service
在文件中添加以下內容:
[Unit]
Description=Automated Backup Service
After=network.target
[Service]
ExecStart=/path/to/backup_script.sh
Restart=always
User=your_username
[Install]
WantedBy=multi-user.target
啟用并啟動服務:
sudo systemctl enable backup_service
sudo systemctl start backup_service
inotifywait 支持多種事件,如 modify, create, delete, move 等。你可以根據需要調整事件類型。例如,如果你只想監控文件的創建和修改事件,可以將 -e modify,create,delete 改為 -e modify,create。
inotify 還支持更高級的用法,如監控子目錄、設置閾值、使用多個 inotifywait 實例等。你可以參考 inotify-tools 的文檔和 inotify 的內核文檔來了解更多高級用法。
通過以上步驟,你可以利用 inotify 實現各種自動化任務,提高工作效率。