把sh脚本加入到centos开机自启动

本文介绍两种简单的Linux开机启动设置方法:一是通过修改rc.local文件添加启动脚本;二是使用crontab并设置@reboot任务实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建议使用方法二

Linux 下设置开机启动的三种简单但可行的开机启动设置方法。

  方法一:修改 /etc/rc.d/rc.local 文件  

$ chmod +x /etc/rc.d/rc.local

创建了一个脚本,再给它赋予可执行权限:

$ vim /home/ok/auto_run_script.sh
$ chmod +x /home/ok/auto_run_script.sh

然后,我们再将脚本添加到 /etc/rc.d/rc.local 文件最后一行:

$ vim /etc/rc.d/rc.local
$ /home/ok/auto_run_script.sh

接下来,我们就可以试试效果了。直接重启系统就可以了:

$ sudo reboot

重启之后,就会在用户目录下看到脚本执行的结果了。

  方法二:使用 crontab  

大家知道,crontab 是 Linux 下的计划任务,当时间达到我们设定的时间时,可以自动触发某些脚本的运行。

我们可以自己设置计划任务时间,然后编写对应的脚本。但是,有个特殊的任务,叫作 @reboot ,我们其实也可以直接从它的字面意义看出来,这个任务就是在系统重启之后自动运行某个脚本。

那它将运行的是什么脚本呢?我们如何去设置这个脚本呢?我们可以通过 crontab -e 来设置。

  1. $ crontab -e

@reboot /home/ok/auto_run_script.sh

然后,直接重启即可。运行的效果跟上面类似。

<think>根据用户需求,用户希望在CentOS 7系统中配置一个shell脚本实现开机自启动。根据引用内容,CentOS 7使用systemd作为初始化系统,因此我们可以通过创建systemd服务单元文件来实现。 步骤: 1. 准备一个shell脚本,并确保它具有可执行权限。 2. 创建一个systemd服务单元文件(以.service结尾),放在/etc/systemd/system/目录下。 3. 在服务单元文件中配置脚本启动信息。 4. 启用该服务,使其在开机时自动启动。 具体操作如下: 第一步:编写shell脚本,并赋予可执行权限 假设我们的脚本路径为`/usr/local/bin/myscript.sh`,使用以下命令赋予可执行权限: ```bash chmod +x /usr/local/bin/myscript.sh ``` 第二步:创建systemd服务文件 在`/etc/systemd/system/`目录下创建一个服务文件,例如`myscript.service`,使用文本编辑器(如vi)创建并编辑: ```bash sudo vi /etc/systemd/system/myscript.service ``` 第三步:在服务文件中写入以下内容(根据引用[2]和引用[3]的示例): ```ini [Unit] Description=My Shell Script # 服务的描述 After=network.target # 表示在网络服务启动之后启动 [Service] Type=simple # 服务启动类型 ExecStart=/usr/local/bin/myscript.sh # 这里替换为你的脚本路径 [Install] WantedBy=multi-user.target # 表示在系统多用户模式下启动 ``` 第四步:保存并退出编辑器,然后重新加载systemd配置,使新的服务文件生效: ```bash sudo systemctl daemon-reload ``` 第五步:启用服务,使其开机自启动: ```bash sudo systemctl enable myscript.service ``` 第六步:如果需要立即启动该服务(而不重启系统),可以使用: ```bash sudo systemctl start myscript.service ``` 验证服务状态: ```bash sudo systemctl status myscript.service ``` 注意事项: 1. 确保脚本中的路径是绝对路径,且脚本中涉及的命令也使用绝对路径,以避免环境变量问题。 2. 如果脚本需要长时间运行,确保脚本不会在后台退出(如果是后台服务,需要持续运行)。 3. 如果脚本需要特定用户运行,可以在[Service]部分添加`User=用户名`。 通过以上步骤,就可以实现在CentOS 7中设置shell脚本开机自启动。 引用说明: [^1]: 在LinuxCentOS7中设置shell脚本开机自启动服务。 [^2]: centos设置 sh脚本开机自启动。 [^3]: 蓝易云 - 在LinuxCentOS7中设置shell脚本开机自启动服务。 §§相关问题§§ 1. 如何查看systemd服务的日志以排查脚本启动问题? 2. 如果脚本需要以特定用户身份运行,应该如何配置systemd服务? 3. 如何设置脚本在系统启动后延迟一段时间再执行? 4. 如何禁用或删除已设置的开机自启动服务?</think>### CentOS 7 设置 Shell 脚本开机自启动方法 在 CentOS 7 中,可以通过创建 **Systemd 服务单元**来实现 shell 脚本开机自启动。以下是详细步骤: --- #### **步骤 1:准备 Shell 脚本** 1. 创建脚本文件(如 `/opt/myscript.sh`)并添加可执行权限: ```bash sudo vi /opt/myscript.sh # 编辑脚本 sudo chmod +x /opt/myscript.sh # 添加可执行权限 ``` 2. 脚本示例(测试用): ```bash #!/bin/bash echo "脚本启动 $(date)" >> /var/log/myscript.log # 在此处添加您的实际业务逻辑 ``` --- #### **步骤 2:创建 Systemd 服务文件** 在 `/etc/systemd/system/` 目录下创建服务文件(如 `myscript.service`): ```bash sudo vi /etc/systemd/system/myscript.service ``` 文件内容如下(根据实际路径修改): ```ini [Unit] Description=自定义开机启动脚本 # 服务描述 After=network.target # 在网络就绪后启动 [Service] Type=simple # 服务类型 ExecStart=/opt/myscript.sh # 脚本绝对路径 Restart=on-failure # 失败时自动重启 User=root # 运行用户(可选) [Install] WantedBy=multi-user.target # 多用户模式启用 ``` --- #### **步骤 3:启用自启动服务** 1. 重新加载 Systemd 配置: ```bash sudo systemctl daemon-reload ``` 2. 启用开机自启动: ```bash sudo systemctl enable myscript.service ``` ✅ 成功提示:`Created symlink /etc/systemd/system/multi-user.target.wants/myscript.service → /etc/systemd/system/myscript.service` --- #### **步骤 4:验证操作** - **手动启动测试**: ```bash sudo systemctl start myscript.service sudo systemctl status myscript.service # 检查状态 ``` - **查看日志**: ```bash journalctl -u myscript.service # 检查服务日志 cat /var/log/myscript.log # 查看脚本输出 ``` - **重启验证**: ```bash sudo reboot systemctl status myscript.service # 重启后检查服务状态 ``` --- #### **注意事项** 1. **脚本路径**:必须使用**绝对路径**(如 `/opt/myscript.sh`) 2. **权限问题**: - 脚本需有可执行权限(`chmod +x`) - 涉及文件操作时注意用户权限(建议通过 `User=` 指定运行用户) 3. **依赖顺序**: - 若需在特定服务后启动(如数据库),在 `[Unit]` 添加 `After=postgresql.service` 4. **调试技巧**: ```bash systemctl status myscript.service # 查看实时状态 journalctl -xe -u myscript.service # 查看详细日志 ``` > 引用说明:此方法基于 CentOS 7 的 Systemd 机制实现,通过创建服务单元文件控制启动顺序和依赖关系[^1][^2][^3]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值