本文目录导读:

当然可以!我来为您提供一个文件使用记录监控脚本,这里提供几个不同平台的实现方案:
Linux 文件访问监控脚本
#!/bin/bash
# 文件访问监控脚本 (Linux)
# 配置
LOG_FILE="/var/log/file_access.log"
MONITOR_DIR="/path/to/your/directory" # 要监控的目录
WATCH_INTERVAL=5 # 检查间隔(秒)
# 创建日志文件
touch "$LOG_FILE"
# 使用 inotifywait 监控文件访问
echo "开始监控 $MONITOR_DIR ..."
inotifywait -m -r --format '%T %w%f %e' \
--timefmt '%Y-%m-%d %H:%M:%S' \
"$MONITOR_DIR" | while read timestamp file event
do
echo "$timestamp | $event | $file" >> "$LOG_FILE"
done
Python 跨平台文件监控脚本
#!/usr/bin/env python3
# 文件使用记录监控脚本(跨平台)
import os
import time
import logging
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import json
from datetime import datetime
class FileMonitorHandler(FileSystemEventHandler):
def __init__(self, log_file):
self.log_file = log_file
self.setup_logging()
def setup_logging(self):
logging.basicConfig(
filename=self.log_file,
level=logging.INFO,
format='%(asctime)s | %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
def log_event(self, event_type, src_path, dest_path=None):
log_data = {
"timestamp": datetime.now().isoformat(),
"event": event_type,
"source": src_path,
"destination": dest_path or ""
}
logging.info(json.dumps(log_data))
# 同时输出到控制台
print(f"[{log_data['timestamp']}] {event_type}: {src_path}")
def on_created(self, event):
if not event.is_directory:
self.log_event("CREATED", event.src_path)
def on_modified(self, event):
if not event.is_directory:
self.log_event("MODIFIED", event.src_path)
def on_deleted(self, event):
if not event.is_directory:
self.log_event("DELETED", event.src_path)
def on_moved(self, event):
if not event.is_directory:
self.log_event("MOVED", event.src_path, event.dest_path)
def main():
# 配置
MONITOR_PATH = r"C:\Users\YourUsername\Documents" # Windows示例
# MONITOR_PATH = "/home/username/Documents" # Linux示例
LOG_FILE = "file_usage.log" # 日志文件路径
if not os.path.exists(MONITOR_PATH):
print(f"错误: 路径 {MONITOR_PATH} 不存在")
return
print(f"开始监控目录: {MONITOR_PATH}")
print(f"日志文件: {LOG_FILE}")
print("按 Ctrl+C 停止监控...")
event_handler = FileMonitorHandler(LOG_FILE)
observer = Observer()
observer.schedule(event_handler, MONITOR_PATH, recursive=True) # recursive=True 递归监控子目录
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
print("\n监控已停止")
observer.join()
if __name__ == "__main__":
main()
极简版监控脚本(无第三方库)
#!/usr/bin/env python3
# 简易文件监控(使用系统命令)
import os
import subprocess
import time
from datetime import datetime
def monitor_windows():
"""Windows 下的文件监控"""
path = r"C:\Your\Directory"
cmd = f'powershell -Command "Get-ChildItem -Path {path} -Recurse | Select-Object Name,LastWriteTime"'
while True:
result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
with open("file_log.txt", "a", encoding="utf-8") as f:
f.write(f"\n=== {timestamp} ===\n")
f.write(result.stdout)
time.sleep(10)
def monitor_linux():
"""Linux 下的文件监控"""
path = "/var/log/your_dir"
while True:
result = subprocess.run(['ls', '-la', path], capture_output=True, text=True)
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
with open("file_log.txt", "a", encoding="utf-8") as f:
f.write(f"\n=== {timestamp} ===\n")
f.write(result.stdout)
time.sleep(10)
# 根据操作系统选择
if os.name == 'nt': # Windows
monitor_windows()
else: # Linux
monitor_linux()
安装依赖
Python 版本需要安装 watchdog:
pip install watchdog
运行方法
Linux 脚本:
chmod +x monitor.sh ./monitor.sh
Python 脚本:
# 直接运行 python3 file_monitor.py # 后台运行 nohup python3 file_monitor.py > monitor.log 2>&1 &
输出示例
2024-01-15 10:30:25 | MODIFIED: C:\Users\test\Documents\report.pdf 2024-01-15 10:31:02 | CREATED: C:\Users\test\Documents\new_file.txt 2024-01-15 10:32:18 | MOVED: C:\Users\test\Documents\old.txt to C:\Users\test\Documents\new.txt
使用建议
- 选择合适的位置:不要监控整个系统盘,只监控需要的目录
- 日志管理:定期清理日志文件,避免占满磁盘
- 性能考虑:监控大文件或高频率访问的文件可能会影响性能
- 权限设置:确保脚本有足够的权限访问目标目录
如果需要更具体的定制(比如监控特定文件类型、添加通知功能等),请告诉我您的具体需求!
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播