Linux使用inotify-tools監(jiān)控目錄變化的流程步驟

當(dāng) Linux 系統(tǒng)目錄中有新文件創(chuàng)建時(shí)執(zhí)行命令,可以通過(guò)組合使用工具和腳本實(shí)現(xiàn)監(jiān)控。一種常見(jiàn)的方法是使用 inotify-tools,這是一個(gè)允許您監(jiān)視文件系統(tǒng)事件的實(shí)用程序,與 shell 腳本一起使用。
Step 1: 安裝 inotify-tools
首先,你需要安裝 inotify-tools,通??梢允褂冒芾砥靼惭b它。
sudo apt update sudo apt install inotify-tools
Step 2: 創(chuàng)建 Shell Script
接下來(lái),創(chuàng)建一個(gè) shell 腳本,該腳本使用 inotifywait 來(lái)監(jiān)視目錄中是否有新文件,然后在檢測(cè)到新文件時(shí)調(diào)用 API,下面是這個(gè)腳本的簡(jiǎn)單示例:
#!/bin/bash
# Directory to monitor
MONITOR_DIR="/path/to/your/directory"
# Your custom command
# CUSTOM_COMMAND="curl -X POST -d @newfile http://your.api.endpoint"
# Monitor for new files and call the API
inotifywait -m -e create --format '%w%f' "$MONITOR_DIR" | while read NEWFILE
do
echo "New file detected: $NEWFILE"
# Uncomment to execute custom command
#eval $CUSTOM_COMMAND
done
在此腳本中,將 “/path/to/your/directory” 替換為你想監(jiān)控的目錄,將“http://your.api.endpoint”替換為你的上傳 API 地址,您也可以修改 CUSTOM_COMMAND 包括其它數(shù)據(jù)或參數(shù)選項(xiàng)。
Step 3: 執(zhí)行腳本
修改文件權(quán)限,讓其可以執(zhí)行
chmod +x monitor.sh
執(zhí)行腳本
bash monitor.sh
Step 4: 后臺(tái)執(zhí)行腳本
如果您希望這個(gè)腳本在后臺(tái)連續(xù)運(yùn)行,您可以使用 nohup 或 tmux 會(huì)話中運(yùn)行它。
For example:
nohup ./monitor.sh &
Step 5: 以 Systemd 服務(wù)方式運(yùn)行腳本
確保您的腳本已正確編寫(xiě)和測(cè)試。將其放在合適的目錄,例如: /usr/local/bin/
sudo mv monitor.sh /usr/local/bin/
確保它是可執(zhí)行的
sudo chmod +x /usr/local/bin/monitor.sh
創(chuàng)建一個(gè)新的 systemd 服務(wù)文件
sudo nano /etc/systemd/system/monitor.service
將以下內(nèi)容添加到文件中
[Unit] Description=File Monitor Service [Service] ExecStart=/usr/local/bin/monitor.sh Restart=always User=nobody Group=nogroup [Install] WantedBy=multi-user.target
保存并關(guān)閉該文件,重新加載 systemd 管理器配置
sudo systemctl daemon-reload
設(shè)置開(kāi)機(jī)啟動(dòng)
sudo systemctl enable monitor.service
啟動(dòng)服務(wù)
sudo systemctl start monitor.service
檢查服務(wù)狀態(tài)
sudo systemctl status monitor.service
補(bǔ)充說(shuō)明
- 這個(gè)腳本是一個(gè)基本的例子。根據(jù)具體需求,您可能需要對(duì)其進(jìn)行修改。
- 如果需要更復(fù)雜的監(jiān)視或處理,請(qǐng)考慮使用更健壯的解決方案或編程語(yǔ)言。
- 確保您的腳本是自包含的,不需要交互式輸入。Systemd 服務(wù)不是為交互使用而設(shè)計(jì)的。
- 如果您的腳本寫(xiě)入日志,請(qǐng)確保它寫(xiě)入一個(gè)它有權(quán)訪問(wèn)的位置。
到此這篇關(guān)于Linux使用inotify-tools監(jiān)控目錄變化的流程步驟的文章就介紹到這了,更多相關(guān)Linux inotify-tools監(jiān)控目錄變化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從Linux源碼看Socket(TCP)Client端的Connect的示例詳解
這篇文章主要介紹了從Linux源碼看Socket(TCP)Client端的Connect,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
inotify-tools+rsync實(shí)時(shí)同步文件的配置方法
我使用的是google的inotify-tools,比較簡(jiǎn)單.國(guó)內(nèi)有功能很強(qiáng)大的類(lèi)似的程序,但是好復(fù)雜.2013-02-02
error while loading shared libraries xx.so處理方法
一般我們?cè)贚inux下執(zhí)行某些外部程序的時(shí)候可能會(huì)提示找不到共享庫(kù)(error while loading shared libraries xx.so)的錯(cuò)誤2013-04-04
Apache 虛擬目錄和默認(rèn)首頁(yè)的設(shè)置
Apache虛擬目錄和默認(rèn)首頁(yè)的設(shè)置,用apache做服務(wù)器的朋友必須要懂的。2009-11-11
入域的Windows訪問(wèn)未入域的Samba服務(wù)方法介紹
這篇文章主要介紹了入域的Windows訪問(wèn)未入域的Samba服務(wù)方法介紹,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Linux磁盤(pán)空間耗盡導(dǎo)致系統(tǒng)故障問(wèn)題及說(shuō)明
文章主要內(nèi)容是Linux系統(tǒng)磁盤(pán)耗盡導(dǎo)致報(bào)錯(cuò)的排障和維護(hù)思路,包括確認(rèn)故障、查找占用空間的文件或目錄、清理文件以及預(yù)防措施,還介紹了ncdu工具的使用方法和日志管理、臨時(shí)文件管理、軟鏈接和硬鏈接、磁盤(pán)配額等高級(jí)維護(hù)技巧2026-01-01
Linux主機(jī)登錄abrt-cli status timed out的問(wèn)題及解決
這篇文章主要介紹了Linux主機(jī)登錄abrt-cli status timed out的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

