CentOS 7服务器重启或启动时执行命令或脚本

环境说明

服务器重启或启动时执行命令或脚本

  • 操作系统: CentOS Linux release 7.9.2009
  • CPU架构: X86-64

方案

  • 方案一:使用/etc/rc.d/rc.local文件

    • 在该文件中添加要在服务器启动时执行的命令或脚本
    • 确保rc.local文件具有可执行权限:chmod +x /etc/rc.d/rc.local
  • 方案二:使用crontab

    • 使用crontab -e添加一条记录(服务器启动后延迟10秒执行指定脚本):@reboot sleep 10 && /root/reboot_crontab_test.sh(放在最前面,否则保存文件的时候会报错)
    • 保存文件reboot系统即可
  • 方案三:使用systemd服务(/etc/systemd/system)

    • 创建一个新的服务单元文件:vi /etc/systemd/system/my-service.service,添加以下代码
[Unit]
Description=My Service
After=network.target

[Service]
ExecStart=/root/reboot_test_systemd.sh

[Install]
WantedBy=default.target

[Unit]:这个部分定义了服务单元的基本信息。
Description:描述了服务的名称或用途。
After:指定了服务应该在哪个目标(target)之后启动。在这个例子中,服务将在网络目标(network.target)之后启动。

[Service]:这个部分定义了服务的执行方式。
ExecStart:指定了要执行的命令或脚本的路径。在这个例子中,服务将执行/root/reboot_test_systemd.sh脚本。

[Install]:这个部分定义了服务的安装方式。
WantedBy:指定了服务应该被启用的目标。在这个例子中,服务将被启用为默认目标(default.target)的一部分。

  • 编辑脚本(自定义脚本的开头加上脚本解释器#!/bin/sh):/root/reboot_test_systemd.sh,代码如下
#!/bin/sh
echo "hello,i am systemd test" > reboot_systemd.txt
  • 添加可执行权限:chmod +x /etc/systemd/system/my-service.service
  • 启用服务:systemctl enable my-service.service
  • 启动服务:systemctl start my-service.service
posted @ 2023-08-09 18:45  小舟杂笔  阅读(1315)  评论(0)    收藏  举报