本文目录导读:

- 批量监听多个文件变化(开发/运维常用)
- 批量监听多个网络端口(健康检查或入侵检测)
- 批量监听多个进程状态(服务器监控)
- 批量监听日志模式(日志聚合与告警)
- 使用任务管理工具批量监听(适合大规模集群)
- ⚠️ 注意事项
可以。 绝大多数实用脚本工具都支持批量监听,具体实现方式取决于你的使用场景(是监听文件变化、网络端口、进程状态,还是日志输出)。
以下是几种常见场景的批量监听方案及脚本示例:
批量监听多个文件变化(开发/运维常用)
如果你需要同时监听多个配置文件或日志文件,可以使用 inotifywait(Linux)或 fswatch(跨平台)。
Linux 脚本示例(监听目录下所有 .conf 文件):
#!/bin/bash WATCH_DIR="/etc/nginx/conf.d" inotifywait -m -r -e modify,create,delete \ --format '%w%f %e' \ "$WATCH_DIR" | while read file event do echo "[$(date)] $file 发生了 $event 事件" # 可以在这里执行批量重载命令,nginx -s reload done
Python 监听多个文件(使用 watchdog 库):
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class BatchHandler(FileSystemEventHandler):
def on_modified(self, event):
if not event.is_directory and event.src_path.endswith('.txt'):
print(f"检测到修改: {event.src_path}")
if __name__ == "__main__":
paths = ["/data/logs/app1", "/data/logs/app2"] # 批量监听多个目录
event_handler = BatchHandler()
observers = []
for path in paths:
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
observers.append(observer)
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
for o in observers:
o.stop()
for o in observers:
o.join()
批量监听多个网络端口(健康检查或入侵检测)
使用 nc(netcat)或 ss 循环检测一组端口。
Shell 脚本示例(每隔5秒检查一批端口是否存活):
#!/bin/bash
ports=(22 80 443 3306 6379)
host="127.0.0.1"
while true; do
for port in "${ports[@]}"; do
nc -zv -w2 $host $port 2>/dev/null && echo "[OK] $host:$port" || echo "[FAIL] $host:$port"
done
sleep 5
clear # 清屏实现滚动静默(可选)
done
更高效的批量扫描(使用 nmap 或 fping):
# 批量监听局域网内多个 IP 的 80 端口 nmap -sT -p 80 --open 192.168.1.0/24 -oG - | grep "/open"
批量监听多个进程状态(服务器监控)
通过 /proc 文件系统或 pgrep 批量监控一组服务进程。
Bash 脚本示例(监控多个关键进程,异常时告警):
#!/bin/bash
process_list=("nginx" "mysqld" "redis-server" "sshd")
while true; do
for proc in "${process_list[@]}"; do
if pgrep -x "$proc" > /dev/null; then
echo "[OK] $proc 正在运行"
else
echo "[WARN] $proc 已停止!"
# 可以在这里发送告警或自动重启
# systemctl restart $proc
fi
done
sleep 10
echo "---"
done
批量监听日志模式(日志聚合与告警)
同时对多个日志文件进行 tail 并匹配不同关键词。
#!/bin/bash
# 同时查看多个日志文件并标记来源
tail -f /var/log/nginx/access.log /var/log/mysql/slow.log /var/log/syslog | \
awk '/ERROR/ {print "[ERROR]", FILENAME, $0} /WARN/ {print "[WARN]", FILENAME, $0}'
更高级的做法(使用 multitail):
# 安装 multitail:apt install multitail multitail -c /etc/nginx/nginx.conf -c /var/log/mysql/error.log
multitail 可以同时打开多个窗口,每个窗口实时滚动不同文件。
使用任务管理工具批量监听(适合大规模集群)
如果你的“批量监听”是指对大量服务器或容器执行同一监听脚本,推荐:
- Ansible:
ansible all -m shell -a 'systemctl status nginx'批量获取几百台机器上 nginx 的状态。 - tmux / screen:在多个窗口中同时执行相同的监听命令(如
tmux send-keys -t 0:0 'inotifywait ...' Enter)。 - Grafana + Prometheus:最多可处理百万级指标的时间序列数据,适合大规模监听。
⚠️ 注意事项
- 资源消耗:如果被监听的对象数量过多(如 10000+ 文件),使用
inotify可能需要增加系统限制:sysctl fs.inotify.max_user_watches=65536
- 不要用 sleep 轮询替代真正的事件驱动:除非被监听对象不支持事件通知(如检查远程 HTTP 服务),否则优先使用
inotify、epoll或kqueue等回调机制,避免 CPU 空转。 - 日志量过大:批量监听多个高吞吐日志时,建议使用
journalctl、lnav或专用的日志分析工具(如 ELK 或 Loki)。
实用建议:
- 如果你要做文件变化监听 → 用
inotifywait或watchdog - 如果你要做网络端口监听 → 用
ss -tlnp或nmap - 如果你要做进程状态监听 → 用
pgrep+ 循环 - 如果你要做日志模式监听 → 用
tail -f|grep或multitail
给我具体场景(监听100台服务器的CPU负载”或“监听一个目录下新增的图片文件”),我可以给你写出可直接运行的批量监听脚本。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播