引子
之前一直使用逗比大佬的iptables转发脚本,但是貌似小鸡重启后转发会失效,一开始小白以为是转发后规则失效,后来发现规则还在,最后发现是内核的转发没开,看了一下/etc/sysctl.conf
发现net.ipv4.ip_forward = 1
参数还是在的,那只需要在开机后运行下sysctl -p
就好了。
那我们现在的目标就是要让小鸡开机后运行某个命令或脚本,小白去网上搜索了一圈,发现主要有如下三种方法:
- 使用 rc.local
- 使用 Crontab
- 使用 systemd
经过小白的尝试,前两种都失败了,最后使用systemd
成功,喜欢用第一种和第二种的童鞋可以自己去研究下。
实操
此方法仅适用于 systemd 系统。该方法非常简单。
为此,你需要创建一个 systemd 启动脚本并将其放在 /etc/systemd/system/ 目录中。
这是我们的示例 systemd 启动单元脚本。
cat > /etc/systemd/system/sysctl-ipt.service <<EOF
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=sysctl -p
[Install]
WantedBy=default.target
EOF
将单元脚本放置在 systemd 所在位置后,运行以下命令更新 systemd 配置文件并启用服务:
systemctl daemon-reload systemctl enable sysctl-ipt.service systemctl restart sysctl-ipt.service
重启系统进行检查:
reboot
额外提示
如果是要在启动时运行某个脚本,仅需将ExecStart=sysctl -p
此处的sysctl -p
改成脚本的绝对路径即可。