51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

如何在重启或启动时执行命令或脚本

目录

引子 {#i}

之前一直使用逗比大佬的iptables转发脚本,但是貌似小鸡重启后转发会失效,一开始小白以为是转发后规则失效,后来发现规则还在,最后发现是内核的转发没开,看了一下/etc/sysctl.conf发现net.ipv4.ip_forward = 1参数还是在的,那只需要在开机后运行下sysctl -p就好了。

那我们现在的目标就是要让小鸡开机后运行某个命令或脚本,小白去网上搜索了一圈,发现主要有如下三种方法:

  1. 使用 rc.local
  2. 使用 Crontab
  3. 使用 systemd

经过小白的尝试,前两种都失败了,最后使用systemd成功,喜欢用第一种和第二种的童鞋可以自己去研究下。

实操 {#i-2}

此方法仅适用于 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

额外提示 {#i-3}

如果是要在启动时运行某个脚本,仅需将ExecStart=sysctl -p此处的sysctl -p改成脚本的绝对路径即可。


赞(3)
未经允许不得转载:工具盒子 » 如何在重启或启动时执行命令或脚本