Linux中的觸發器(Trigger)通常是指在特定事件發生時自動執行的腳本或程序。這些觸發器可以基于時間、系統事件、文件變化等多種條件來設置。以下是一些常見的Linux觸發器及其工作原理:
Cron是一個時間基礎的作業調度器,在Linux和Unix-like操作系統中廣泛使用。用戶可以設置cron jobs來定期執行任務。
示例:
# 每天凌晨2點執行backup.sh腳本
0 2 * * * /path/to/backup.sh
Inotify是Linux內核提供的一種文件系統事件監控機制。它可以用來檢測文件或目錄的變化,如創建、刪除、修改等。
示例代碼(Python):
import inotify.adapters
i = inotify.adapters.Inotify()
i.add_watch('/path/to/directory')
for event in i.event_gen(yield_nones=False):
(_, type_names, path, filename) = event
print(f'PATH=[{path}] FILENAME=[{filename}] EVENT_TYPES={type_names}')
# 執行相應的操作
Systemd是現代Linux發行版中常用的初始化系統和系統管理守護進程。Systemd Timers是Systemd的一部分,用于定時執行任務。
示例:
# /etc/systemd/system/backup.service
[Unit]
Description=Backup service
[Service]
ExecStart=/path/to/backup.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup.service daily at 2am
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target
啟用并啟動timer:
sudo systemctl enable backup.timer
sudo systemctl start backup.timer
Udev是Linux內核的設備管理器,可以用來響應硬件設備的插入和移除事件。
示例規則文件(/etc/udev/rules.d/99-local.rules):
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sda1", RUN+="/path/to/mount_script.sh"
Linux中的觸發器通過不同的機制(如時間、文件系統事件、硬件事件等)來檢測特定條件,并在條件滿足時執行預定義的操作。選擇合適的觸發器類型取決于具體的應用場景和需求。