无规则采集器列表算法(直接用过滤器的生成规则去删除TC的filter会导致所有过滤器都被清空)
优采云 发布时间: 2022-03-21 12:00无规则采集器列表算法(直接用过滤器的生成规则去删除TC的filter会导致所有过滤器都被清空)
直接用过滤器生成规则删除TC过滤器会导致所有过滤器被清除
邮件列表中提到了正确的方法
与类不同,添加后很容易删除。只需将 TC 命令中的 add 替换为 del 即可。如果重复上课,会提示好像路由添加错误。
但过滤器不同。可以连续添加具有相同规则的过滤器。添加规则后,内核会使用不同的句柄号进行区分。
要删除一个过滤器,不能简单地将规则的add改为del,它会删除所有过滤器规则,因为你没有提供最重要的句柄号(handle),如果你不提供,为0。如果为0,则删除所有规则。
您必须至少提供以下信息:
开发
父级(qdisc 或类)
优先
种类(过滤器类型)
处理
如果一个过滤器已经与一个类关联,那么如果你删除这个类,你会得到这个提示:RTNETLINK answers: Device or resource busy
因此,在删除类规则之前,请先删除与该类关联的过滤器。下面是我的一个实现($id代表类规则ID号)
[bash]handles=tc filter list dev ${dev} |grep "flowid 1:${id}"|awk '{print $10}'
$handles 中的句柄
做
tc filter delete dev ${dev} parent 1: protocol ip prio 1 handle ${handle} u32
完成[/bash]
之所以使用循环,是因为过滤器可能与一个类有多个关联
作者信息:来自:正确删除tc的过滤器过滤器网址:请保留此链接,谢谢!
本作品已获得知识共享署名-非商业性许可3.0 Unported License。