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

linux admin 3年前 (2021-12-10) 1531次浏览 1个评论

引子

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

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

  1. 使用 rc.local
  2. 使用 Crontab
  3. 使用 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改成脚本的绝对路径即可。


VPS小白 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:如何在重启或启动时执行命令或脚本
喜欢 (1)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽