iptables实际操作

使用-v选项后,iptables为我们展示的信息更多了,那么,这些字段都是什么意思呢?我们来总结一下

  1. pkts:对应规则匹配到的报文的个数。
  2.  
  3. bytes:对应匹配到的报文包的大小总和。
  4.  
  5. target:规则对应的target,往往表示规则对应的"动作",即规则匹配成功后需要采取的措施。
  6.  
  7. prot:表示规则对应的协议,是否只针对某些协议应用此规则。
  8.  
  9. opt:表示规则对应的选项。
  10.  
  11. in:表示数据包由哪个接口(网卡)流入,我们可以设置通过哪块网卡流入的报文需要匹配当前规则。
  12.  
  13. out:表示数据包由哪个接口(网卡)流出,我们可以设置通过哪块网卡流出的报文需要匹配当前规则。
  14.  
  15. source:表示规则对应的源头地址,可以是一个IP,也可以是一个网段。
  16.  
  17. destination:表示规则对应的目标地址。可以是一个IP,也可以是一个网段。

  1. policy:表示当前链的默认策略
  2.  
  3. packets:表示当前链(上例为INPUT链)默认策略匹配到的包的数量, packets表示默认策略匹配到0个包。
  4.  
  5. bytes:表示当前链默认策略匹配到的所有包的大小总和。
  6.  
  7. 其实,我们可以把packetsbytes称作"计数器",上图中的计数器记录了默认策略匹配到的报文数量与总大小,
    "计数器"只会在使用-v选项时,才会显示出来。

常用基本命令:

1.1、查看对应表的所有规则,-t选项指定要操作的表,省略"-t 表名"时,默认表示操作filter表,-L表示列出规则,即查看规则。

  1. iptables -t 表名 -L

1.2、查看指定表的指定链中的规则。

  1. iptables -t 表名 -L 链名

1.3、查看指定表的所有规则,并且显示更详细的信息(更多字段),-v表示verbose,表示详细的,冗长的,当使用-v选项时,会显示出"计数器"的信息,由于上例中使用的选项都是短选项,所以一般简写为iptables -t 表名 -vL

  1. iptables -表名 --L

1.4、表示查看表的所有规则,并且在显示规则时,不对规则中的IP或者端口进行名称反解,-n选项表示不解析IP地址。

  1. iptables -表名 --L

1.5、表示查看表的所有规则,并且显示规则的序号,--line-numbers选项表示显示规则的序号,注意,此选项为长选项,不能与其他短选项合并,不过此选项可以简写为--line,注意,简写后仍然是两条横杠,仍然是长选项。

  1. iptables --line-numbers -表名 -L

1.6、表示查看表中的所有规则,并且显示更详细的信息(-v选项),不过,计数器中的信息显示为精确的计数值,而不是显示为经过可读优化的计数值,-x选项表示显示计数器的精确值。

  1. iptables -表名 ---L

1.7、当然,也可以只查看某张表中的某条链,此处以filter表的INPUT链为例

  1. iptables --line -t filter -nvxL

添加规则

注意点:添加规则时,规则的顺序非常重要

2.1、在指定表的指定链的尾部添加一条规则,-A选项表示在对应链的末尾添加规则,省略-t选项时,表示默认操作filter表中的规则

  1. 命令语法:iptables -t 表名 -A 链名 匹配条件 -j 动作
  2. 示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP

2.2、在指定表的指定链的首部添加一条规则,-I选型表示在对应链的开头添加规则

  1. 命令语法:iptables -t 表名 -I 链名 匹配条件 -j 动作
  2. 示例:iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT

2.3、在指定表的指定链的指定位置添加一条规则

  1. 命令语法:iptables -t 表名 -I 链名 规则序号 匹配条件 -j 动作
  2. 示例:iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT

2.4、设置指定表的指定链的默认策略默认动作),并非添加规则。

  1. 命令语法:iptables -t 表名 -P 链名 动作
  2. 示例:iptables -t filter -P FORWARD ACCEPT

上例表示将filter表中FORWARD链的默认策略设置为ACCEPT

删除规则

注意点:如果没有保存规则,删除规则时请慎重

3.1、按照规则序号删除规则,删除指定表的指定链的指定规则,-D选项表示删除对应链中的规则。

  1. 命令语法:iptables -t 表名 -D 链名 规则序号
  2. 示例:iptables -t filter -D INPUT 3

上述示例表示删除filter表中INPUT链中序号为3的规则。

3.2、按照具体的匹配条件与动作删除规则,删除指定表的指定链的指定规则。

  1. 命令语法:iptables -t 表名 -D 链名 匹配条件 -j 动作
  2. 示例:iptables -t filter -D INPUT -s 192.168.1.146 -j DROP

上述示例表示删除filter表中INPUT链中源地址为192.168.1.146并且动作为DROP的规则。

3.3、删除指定表的指定链中的所有规则,-F选项表示清空对应链中的规则,执行时需三思。

  1. 命令语法:iptables -t 表名 -F 链名
  2. 示例:iptables -t filter -F INPUT

3.4、删除指定表中的所有规则,执行时需三思。

  1. 命令语法:iptables -t 表名 -F
  2. 示例:iptables -t filter -F

修改规则

注意点:如果使用-R选项修改规则中的动作,那么必须指明原规则中的原匹配条件,例如源IP,目标IP等。

4.1、修改指定表中指定链的指定规则,-R选项表示修改对应链中的规则,使用-R选项时要同时指定对应的链以及规则对应的序号,并且规则中原本的匹配条件不可省略。

  1. 命令语法:iptables -t 表名 -R 链名 规则序号 规则原本的匹配条件 -j 动作
  2. 示例:iptables -t filter -R INPUT 3 -s 192.168.1.146 -j ACCEPT

上述示例表示修改filter表中INPUT链的第3条规则,将这条规则的动作修改为ACCEPT, -s 192.168.1.146为这条规则中原本的匹配条件,如果省略此匹配条件,修改后的规则中的源地址可能会变为0.0.0.0/0。

其他修改规则的方法先通过编号删除规则,再在原编号位置添加一条规则。

4.2、修改指定表的指定链的默认策略(默认动作),并非修改规则,可以使用如下命令。

  1. 命令语法:iptables -t 表名 -P 链名 动作
  2. 示例:iptables -t filter -P FORWARD ACCEPT

保存规则

5.1、保存规则命令如下,表示将iptables规则保存至/etc/sysconfig/iptables文件中,如果对应的操作没有保存,那么当重启iptables服务以后

  1. service iptables save

注意点:centos7中使用默认使用firewalld,如果想要使用上述命令保存规则,需要安装iptables-services,具体配置过程请回顾上文。

5.2、或者使用如下方法保存规则

  1. iptables-save > /etc/sysconfig/iptables

5.3、可以使用如下命令从指定的文件载入规则,注意:重载规则时,文件中的规则将会覆盖现有规则。

  1. iptables-restore < /etc/sysconfig/iptables

基本匹配条件

6.1、-s用于匹配报文的源地址,可以同时指定多个源地址,每个IP之间用逗号隔开,也可以指定为一个网段。

  1. #示例如下
  2. iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP
  3. iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT
  4. iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT

6.2、-d用于匹配报文的目标地址,可以同时指定多个目标地址,每个IP之间用逗号隔开,也可以指定为一个网段。

  1. #示例如下
  2. iptables -t filter -I OUTPUT -d 192.168.1.111,192.168.1.118 -j DROP
  3. iptables -t filter -I INPUT -d 192.168.1.0/24 -j ACCEPT
  4. iptables -t filter -I INPUT ! -d 192.168.1.0/24 -j ACCEPT

6.3、-p用于匹配报文的协议类型,可以匹配的协议类型tcp、udp、udplite、icmp、esp、ah、sctp等(centos7中还支持icmpv6、mh)

  1. #示例如下
  2. iptables -t filter -I INPUT -p tcp -s 192.168.1.146 -j ACCEPT
  3. iptables -t filter -I INPUT ! -p udp -s 192.168.1.146 -j ACCEPT

6.4、-i用于匹配报文是从哪个网卡接口流入本机的,由于匹配条件只是用于匹配报文流入的网卡,所以在OUTPUT链与POSTROUTING链中不能使用此选项。

  1. #示例如下
  2. iptables -t filter -I INPUT -p icmp -i eth4 -j DROP
  3. iptables -t filter -I INPUT -p icmp ! -i eth4 -j DROP

6.5、-o用于匹配报文将要从哪个网卡接口流出本机,于匹配条件只是用于匹配报文流出的网卡,所以在INPUT链与PREROUTING链中不能使用此选项。

  1. #示例如下
  2. iptables -t filter -I OUTPUT -p icmp -o eth4 -j DROP
  3. iptables -t filter -I OUTPUT -p icmp ! -o eth4 -j DROP

扩展匹配条件

I)不是基本匹配条件的就是扩展匹配条件

II)基本匹配条件我们可以直接使用,而如果想要使用扩展匹配条件,则需要依赖一些扩展模块,或者说,在使用扩展匹配条件之前,需要指定相应的扩展模块才行

III)想要使用--dport这个扩展匹配条件,则必须依靠某个扩折模块完成,如果在没有使用-m指定对应的扩展模块名称的情况下,使用了扩展匹配条件,  iptables默认会调用与-p选项对应的协议名称相同的模块

注意,-p tcp与 -m tcp并不冲突,-p用于匹配报文的协议,-m 用于指定扩展模块的名称,正好,这个扩展模块也叫tcp;如果协议和模块相同,则可以省略-m选项; iptables默认会调用与-p选项对应的协议名称相同的模块。

7.1、tcp扩展模块

常用的扩展匹配条件如下:

-p tcp -m tcp --sport 用于匹配tcp协议报文的源端口,可以使用冒号指定一个连续的端口范围

-p tcp -m tcp --dport 用于匹配tcp协议报文的目标端口,可以使用冒号指定一个连续的端口范围

-p tcp -m tcp --tcp-flags   "--tcp-flags"指的就是tcp头中的标志位

-p tcp -m tcp --syn             可以使用"--syn"选项去匹配tcp新建连接的请求报文   

用于匹配报文的tcp头的标志位

  1. #示例如下
  2. iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT
  3. iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT
  4. iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT
  5. iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT
  1. iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN -j REJECT
  2. iptables -t filter -I OUTPUT -p tcp -m tcp --sport 22 --tcp-flags SYN,ACK,FIN,RST,URG,PSH SYN,ACK -j REJECT
  3. iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --tcp-flags ALL SYN -j REJECT
  4. iptables -t filter -I OUTPUT -p tcp -m tcp --sport 22 --tcp-flags ALL SYN,ACK -j REJECT
  1. iptables -t filter -I INPUT -p tcp -m tcp --dport 22 --syn -j REJECT

7.2、multiport扩展模块

常用的扩展匹配条件如下:

-p tcp -m multiport --sports 用于匹配报文的源端口,可以指定离散的多个端口号,端口之间用"逗号"隔开

-p udp -m multiport --dports 用于匹配报文的目标端口,可以指定离散的多个端口号,端口之间用"逗号"隔开

  1. #示例如下
  2. iptables -t filter -I OUTPUT -d 192.168.1.146 -p udp -m multiport --sports 137,138 -j REJECT
  3. iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80 -j REJECT
  4. iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport ! --dports 22,80 -j REJECT
  5. iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 80:88 -j REJECT
  6. iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m multiport --dports 22,80:88 -j REJECT

7.3、iprange模块

包含的扩展匹配条件如下

--src-range:指定连续的源地址范围

--dst-range:指定连续的目标地址范围

  1. #示例
  2. iptables -t filter -I INPUT -m iprange --src-range 192.168.1.127-192.168.1.146 -j DROP
  3. iptables -t filter -I OUTPUT -m iprange --dst-range 192.168.1.127-192.168.1.146 -j DROP
  4. iptables -t filter -I INPUT -m iprange ! --src-range 192.168.1.127-192.168.1.146 -j DROP

7.4、string模块

常用扩展匹配条件如下

--algo:指定对应的匹配算法,可用算法为bm、kmp,此选项为必需选项。

--string:指定需要匹配的字符串

  1. #示例
  2. iptables -t filter -I INPUT -p tcp --sport 80 -m string --algo bm --string "OOXX" -j REJECT
  3. iptables -t filter -I INPUT -p tcp --sport 80 -m string --algo bm --string "OOXX" -j REJECT

7.5、time模块

常用扩展匹配条件如下

--timestart:用于指定时间范围的开始时间,不可取反

--timestop:用于指定时间范围的结束时间,不可取反

--weekdays:用于指定"星期几",可取反

--monthdays:用于指定"几号",可取反

--datestart:用于指定日期范围的开始日期,不可取反

--datestop:用于指定日期范围的结束时间,不可取反

  1. #示例
  2. iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT
  3. iptables -t filter -I OUTPUT -p tcp --dport 443 -m time --timestart 09:00:00 --timestop 19:00:00 -j REJECT
  4. iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --weekdays 6,7 -j REJECT
  5. iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --monthdays 22,23 -j REJECT
  6. iptables -t filter -I OUTPUT -p tcp --dport 80 -m time ! --monthdays 22,23 -j REJECT
  7. iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --timestart 09:00:00 --timestop 18:00:00 --weekdays 6,7 -j REJECT
  8. iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --weekdays 5 --monthdays 22,23,24,25,26,27,28 -j REJECT
  9. iptables -t filter -I OUTPUT -p tcp --dport 80 -m time --datestart 2017-12-24 --datestop 2017-12-27 -j REJECT

7.6、connlimit 模块

常用的扩展匹配条件如下

--connlimit-above:单独使用此选项时,表示限制每个IP的链接数量。

--connlimit-mask:此选项不能单独使用,在使用--connlimit-above选项时,配合此选项,则可以针对"某类IP段内的一定数量的IP"进行连接数量的限制,如果不明白可以参考上文的详细解释。

  1. #示例
  2. iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j REJECT
  3. iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j REJECT
  4. iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 10 --connlimit-mask 27 -j REJECT

7.7、limit模块

常用的扩展匹配条件如下

--limit-burst:类比"令牌桶"算法,此选项用于指定令牌桶中令牌的最大数量,上文中已经详细的描述了"令牌桶"的概念,方便回顾。

--limit:类比"令牌桶"算法,此选项用于指定令牌桶中生成新令牌的频率,可用时间单位有second、minute 、hour、day。

  1. #示例 #注意,如下两条规则需配合使用,具体原因上文已经解释过,忘记了可以回顾。
  2. iptables -t filter -I INPUT -p icmp -m limit --limit-burst 3 --limit 10/minute -j ACCEPT
  3. iptables -t filter -A INPUT -p icmp -j REJECT

7.8、udp模块

常用的扩展匹配条件

--sport:匹配udp报文的源地址

--dport:匹配udp报文的目标地址

  1. #示例
  2. iptables -t filter -I INPUT -p udp -m udp --dport 137 -j ACCEPT
  3. iptables -t filter -I INPUT -p udp -m udp --dport 137:157 -j ACCEPT
  4. #可以结合multiport模块指定多个离散的端口

7.9、icmp模块

常用的扩展匹配条件

--icmp-type:匹配icmp报文的具体类型

  1. #示例
  2. iptables -t filter -I INPUT -p icmp -m icmp --icmp-type 8/0 -j REJECT
  3. iptables -t filter -I INPUT -p icmp --icmp-type 8 -j REJECT
  4. iptables -t filter -I OUTPUT -p icmp -m icmp --icmp-type 0/0 -j REJECT
  5. iptables -t filter -I OUTPUT -p icmp --icmp-type 0 -j REJECT
  6. iptables -t filter -I INPUT -p icmp --icmp-type "echo-request" -j REJECT

7.10、state模块

从字面上理解,state可以译为状态,但是我们也可以用一个高大上的词去解释它,state模块可以让iptables实现"连接追踪"机制。

注意:如下报文状态都是对于state模块来说的。

  1. NEW:连接中的第一个包,状态就是NEW,我们可以理解为新连接的第一个包的状态为NEW
  2.  
  3. ESTABLISHED:我们可以把NEW状态包后面的包的状态理解为ESTABLISHED,表示连接已建立。
  4.  
  5. RELATED:从字面上理解RELATED译为关系,但是这样仍然不容易理解,我们举个例子。

  INVALID:如果一个包没有办法被识别,或者这个包没有任何状态,那么这个包的状态就是INVALID,我们可以主动屏蔽状态为INVALID的报文。

  UNTRACKED:报文的状态为untracked时,表示报文未被追踪,当报文的状态为Untracked时通常表示无法找到相关的连接。

  1. #示例:在filter表中创建IN_WEB自定义链
  2. iptables -t filter -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

自定义链

注意:自定义链并不能直接使用,而是需要被默认链引用才能够使用,空口白话说不明白,等到示例时我们自然会明白

8.1、创建自定义链

  1. #示例:在filter表中创建IN_WEB自定义链
  2. iptables -t filter -N IN_WEB

8.2、引用自定义链

  1. #示例:在INPUT链中引用刚才创建的自定义链
  2. iptables -t filter -I INPUT -p tcp --dport 80 -j IN_WEB

8.3、重命名自定义链

  1. #示例:将IN_WEB自定义链重命名为WEB
  2. iptables -E IN_WEB WEB

8.4、删除自定义链

删除自定义链需要满足两个条件

1、自定义链没有被引用

2、自定义链中没有任何规则

  1. #示例:删除引用计数为0并且不包含任何规则的WEB链
  2. iptables -X WEB

网络防火墙

  1. #如果想要iptables作为网络防火墙,iptables所在主机开启核心转发功能,以便能够转发报文。
  2. #使用如下命令查看当前主机是否已经开启了核心转发,0表示为开启,1表示已开启
  3. cat /proc/sys/net/ipv4/ip_forward
  4. #使用如下两种方法均可临时开启核心转发,立即生效,但是重启网络配置后会失效。
  5. 方法一:echo 1 > /proc/sys/net/ipv4/ip_forward
  6. 方法二:sysctl -w net.ipv4.ip_forward=1
  7. #使用如下方法开启核心转发功能,重启网络服务后永久生效。
  8. 配置/etc/sysctl.conf文件(centos7中配置/usr/lib/sysctl.d/00-system.conf文件),在配置文件中将 net.ipv4.ip_forward设置为1
  9.  
  10. #由于iptables此时的角色为"网络防火墙",所以需要在filter表中的FORWARD链中设置规则。
  11. #可以使用"白名单机制",先添加一条默认拒绝的规则,然后再为需要放行的报文设置规则。
  12. #配置规则时需要考虑"方向问题",针对请求报文与回应报文,考虑报文的源地址与目标地址,源端口与目标端口等。
  13. #示例为允许网络内主机访问网络外主机的web服务与sshd服务。
  14. iptables -A FORWARD -j REJECT
  15. iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT
  16. iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 80 -j ACCEPT
  17. iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT
  18. iptables -I FORWARD -d 10.1.0.0/16 -p tcp --sport 22 -j ACCEPT
  19.  
  20. #可以使用state扩展模块,对上述规则进行优化,使用如下配置可以省略许多"回应报文放行规则"。
  21. iptables -A FORWARD -j REJECT
  22. iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 80 -j ACCEPT
  23. iptables -I FORWARD -s 10.1.0.0/16 -p tcp --dport 22 -j ACCEPT
  24. iptables -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

一些注意点:

1、当测试网络防火墙时,默认前提为网络已经正确配置。

2、当测试网络防火墙时,如果出现问题,请先确定主机防火墙规则的配置没有问题。

iptables之精髓(二)的更多相关文章

  1. iptables基本规则配置(二)

    注释:文章中fg:为示例  红色标记的为命令 在上篇博文中详细讲解了iptables的原理及一些常用命令,这里在简要的说明一下: Linux防火墙包含了2个部分,分别是存在于内核空间的(netfilt ...

  2. iptables常用命令二之如何删除nat规则

    删除iptables nat 规则 删除FORWARD 规则: iptables -nL FORWARD --line-number iptables -D FORWARD 1 删除一条nat 规则 ...

  3. iptables之精髓(一)

    防火墙相关概念 从逻辑上讲.防火墙可以大体分为主机防火墙和网络防火墙. 主机防火墙:针对于单个主机进行防护. 网络防火墙:往往处于网络入口或边缘,针对于网络入口进行防护,服务于防火墙背后的本地局域网. ...

  4. CentOS系统配置 iptables防火墙

    阿里云CentOS系统配置iptables防火墙   虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FO ...

  5. 阿里云Centos配置iptables防火墙

    虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FORWORD都是ACCEPT的规则 一.检查iptabl ...

  6. LInux iptables学习

    作者原文 : http://blog.chinaunix.net/uid-9950859-id-98277.html       要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多 ...

  7. [转] Linux下防火墙iptables用法规则详及其防火墙配置

    from: http://www.cnblogs.com/yi-meng/p/3213925.html 备注: 排版还不错,建议看以上的链接. iptables规则 规则--顾名思义就是规矩和原则,和 ...

  8. 阿里云 centos 修改iptables

    一.检查iptables服务状态 首先检查iptables服务的状态 [root@woxplife ~]# service iptables status iptables: Firewall is ...

  9. 阿里云CentOS配置iptables防火墙[转]

    虽说阿里云推出了云盾服务,但是自己再加一层防火墙总归是更安全些,下面是我在阿里云vps上配置防火墙的过程,目前只配置INPUT.OUTPUT和FORWORD都是ACCEPT的规则 一.检查iptabl ...

随机推荐

  1. Ubuntu系统---NVIDIA 驱动安装

    Ubuntu系统---NVIDIA 驱动安装 第一次安装“NVIDIA 驱动”,小小的激动,因为终于可以玩GPU了.预想一块GPU,盼望太久,差点放弃,感谢J姐让我捡个漏.但是,第一次新的试错过程,网 ...

  2. python MySQL安装依赖报错的坑

    0X01 问题 MySQL-python是python调用MySQL的常用库 通常安装时会遇到某些坑. EnvironmentError: mysql_config not found yum -y ...

  3. mysql group_concat长度限制

    group_concat函数有长度限制 查找当前数据库长度 show variables like 'group_concat_max_len' 设置当前session的group_concat长度, ...

  4. Linux文件删除的原理

    Linux文件iNode和block是否删除是通过  i_link  和 i_count 的计数值来判断的.只有i_count  和 I_link 同时为0 的 时候,文件的 iNode和block才 ...

  5. 012_STM32程序移植之_内部flash开机次数管理lib库建立

    012_STM32程序移植之_内部flash开机次数管理lib库建立 1. 测试环境:STM32C8T6 2. 测试接口: 3. 串口使用串口一,波特率9600 单片机引脚------------CH ...

  6. Oracle 后台进程(一)简介

    一.什么是Oracle数据库后台进程 为了时系统性能最好并能够协调多个用户,多进程系统使用了一些附加进程,成为后台进程. 在许多操作系统中,后台进程是在实例启动时自动建立的.一个Oracle实例可以包 ...

  7. controller层直接通过server类调用mapper的通用方法

    自己写的方法没有,但是逆向生成的server类会有继承maybatis-plus的框架 与下图的配置有关

  8. luogu 4768

    kruskal 重构树对于一张无向图,我们在进行 kruskal 的过程中每当合并两个联通块时新建虚拟节点 t对于两个联通块的根节点 fau,fav 连无向边(fau, t),(fav, t) 其中点 ...

  9. slf4j、jcl、jul、log4j1、log4j2、logback大总结[转]

    #1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4 ...

  10. SIGCHLD函数

    SIGCHLD的产生条件 子进程终止时 子进程接收到SIGSTOP信号停止时 子进程处在停止态,接受到SIGCONT后唤醒时 借助SIGCHLD信号回收子进程 子进程结束运行,其父进程会收到SIGCH ...