iptables保存后生效,过几天就失效了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iptables保存后生效,过几天就失效了相关的知识,希望对你有一定的参考价值。

centos5.5,配置iptables后wq保存退出,service iptables restart重启成功,service iptables save保存成功,开始是系统重启后,手动修改的规则不见了,后来不重启机器也会出现规则不见的情况,这个到底是哪里的问题?

参考技术A iptables的配置文件保存在/etc/sysconfig/iptables-config下,书写了iptables规则以后如果需要保存规则,则可以使用命令:iptables-save,使用此命令保存的规则位置可以是任意的,此时保存的规则在重启机器后无法自动生效,需要使用命令iptables-restore恢复,或者写入开机启动脚本/etc/rc.d/rc.local里面。
以下为教材里使用的命令:
保存规则:#iptables-save >/etc/iptables-script
恢复规则:#iptables-restore>/etc/iptables-script
保存和恢复的位置只要是两者一致就可以了,如果iptables-script没有则需要创建。
若想开机自动启用脚本,则可以使用以下命令放到系统初始化Shell脚本/etc/rc.d/rc.local中
#echo '/sbin/iptables-restore /etc/iptables-script' >>/etc/rc.d/rc.local
但近日查看一些资料,发现规则保存的位置在/etc/sysconfig/iptables下,所以一些资料就有了
保存规则:#iptables-save >/etc/sysconfig/iptables
恢复规则:#iptables-restore>/etc/sysconfig/iptables
若想开机自动启用脚本,则可以使用以下命令放到系统初始化Shell脚本/etc/rc.d/rc.local中
#echo '/sbin/iptables-restore /etc/sysconfig/iptables' >>/etc/rc.d/rc.local
此外还有一命令保存规则 #service iptables save,如下图:

规则自动保存到了/etc/sysconfig/iptables,用此命令保存的规则开机会自动生效,所以为了统一期间,建议以后规则的保存都保存在/etc/sysconfig/iptables下。
参考技术B ..你直接vi的然后restart就应该成功了阿。。不会重启后就不见了吧?

LeetCode 0640.求解方程:过几天就看不懂了的迷惑性代码,但是是详解

【LetMeFly】640.求解方程:过几天就看不懂了的迷惑性代码,但是是详解

力扣题目链接:https://leetcode.cn/problems/solve-the-equation/

求解一个给定的方程,将x以字符串 "x=#value" 的形式返回。该方程仅包含 '+''-' 操作,变量 x 和其对应系数。

如果方程没有解,请返回 "No solution" 。如果方程有无限解,则返回 “Infinite solutions”

如果方程中只有一个解,要保证返回值 'x' 是一个整数。

 

示例 1:

输入: equation = "x+5-3+x=6+x-2"
输出: "x=2"

示例 2:

输入: equation = "x=x"
输出: "Infinite solutions"

示例 3:

输入: equation = "2x=x"
输出: "x=0"

 

 

提示:

  • 3 <= equation.length <= 1000
  • equation 只有一个 '='.
  • equation 方程由整数组成,其绝对值在 [0, 100] 范围内,不含前导零和变量 'x' 。 ​​​

方法一:模拟

自认为这道题代码写得太具有迷惑性了,推荐一波官解。如果不嫌弃,也可以看一看我的思路:

首先确定等号的位置,这样我们就可以得知左边的表达式和右边的表达式的范围了。

对于某个表达式,我们求出其中 x x x的系数和常数分别为多少。

那么具体怎么求呢?

首先我们把表达式分割成一个一个的小单元“-2”、“+3”、“5”、“-x”、“-2x”、“x”、“3x”等,分割规则是:遇到下一个“加减号”或到表达式结尾。

对于某个“小单元”,可以手写一个atoi函数求出这个小单元的值/ x x x的系数(如果最后一个字符是x就加到 x x x的系数上,否则就加到常数上)(如果最后一个字符是x,那么调用atoi时就把长度减少一位,不把x这个字符传递给atoi函数)

那么怎么写atoi函数呢?

首先要讨论传递到这个函数中的字符串有哪几种情况:

  • -2(来自-2-2x
  • +3(来自+3+3x
  • 5(来自55x
  • -(来自-x
  • ``````(来自x

只要我们能处理好上述 5 5 5种情况,那么对于本题来说,就是一个完美的atoi函数。(不能使用自带的atoi,否则+-、``````都将被处理为 0 0 0

最后回到初始问题,我们知道了左边 x x x的系数、左边的常数、右边 x x x的系数、右边的常数,如果“左边 x x x系数等于右边并且左边常数不等于右边”那么就“无解”( x + 1 = x + 2 x + 1 = x + 2 x+1=x+2),如果“左边 x x x系数等于右边并且左边并且左边常数等于右边”那么就“无数解”( x + 1 = x + 1 x + 1 = x + 1 x+1=x+1),否则方程的解为 x = 右边常数 − 左边常数 左边 x 系数 − 右边 x 系数 x=\\frac右边常数 - 左边常数左边x系数 - 右边x系数 x=左边x系数右边x系数右边常数左边常数

  • 时间复杂度 O ( n ) O(n) O(n),其中 n n n是字符串长度,每个字符最多遍历 3 3 3次(判断等号位置、确定下一个加减号的位置、确定某个“小单元”的值)
  • 空间复杂度 O ( 1 ) O(1) O(1)

AC代码

C++

class Solution 
private:
    int getEqualLocation(string& s) 
        for (int i = 0; i < s.size(); i++) 
            if (s[i] == '=')
                return i;
        
        return -1;  // Fake Return
    

    int __LetMeFly_atoi(string& s, int left, int length) 
        if (length == 0) 
            return 1;
        
        if (length == 1 && s[left] == '-') 
            return -1;
        
        if (length == 1 && s[left] == '+') 
            return 1;
        
        int k = 1;
        if (s[left] == '+')
            left++, length--;
        else if (s[left] == '-')
            left++, length--, k = -1;
        int ans = 0;
        while (length--) 
            ans *= 10;
            ans += s[left++] - '0';
        
        return ans * k;
    

    pair<int, int> getXandConst(string& s, int l, int r)   // get [l, r) 's x and const
        pair<int, int> ans;
        int lastLoc = l;
        for (int nowLoc = l; nowLoc <= r; nowLoc++) 
            if (nowLoc != l && (nowLoc == r || s[nowLoc] == '+' || s[nowLoc] == '-')) 
                // (lastLoc, nowLoc)
                (s[nowLoc - 1] == 'x' ? ans.first : ans.second) += __LetMeFly_atoi(s, lastLoc, (s[nowLoc - 1] == 'x' ? nowLoc - 1 : nowLoc) - lastLoc);
                lastLoc = nowLoc;
            
        
        return ans;
    
public:
    string solveEquation(string& equation) 
        int locEqual = getEqualLocation(equation);
        auto [leftX, leftConst] = getXandConst(equation, 0, locEqual);
        auto [rightX, rightConst] = getXandConst(equation, locEqual + 1, equation.size());
        if (leftX == rightX) 
            return leftConst == rightConst ? "Infinite solutions" : "No solution";
        
        return "x=" + to_string((rightConst - leftConst) / (leftX - rightX));
    
;

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/126262898

以上是关于iptables保存后生效,过几天就失效了的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 0640.求解方程:过几天就看不懂了的迷惑性代码,但是是详解

请叫高手:我局域网内的计算机IP我设置好了,怎么过几天就变成另外的IP地址?

重启系统后iptables规则不生效,请求帮助解决

CentOS配置iptables规则并使其永久生效

重启系统后iptables规则不生效,请求帮助解决

iptables通过raw表实现日志输出和调试