如何设置开机自动重启脚本

设置开机启动方式一
最简单粗暴的方式直接在脚本/etc/rc.d/rc.local(和/etc/rc.local是同一个文件,软链)末尾添加自己的脚本
然后,增加脚本执行权限

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

设置开机启动方式二
第二种方式是在crontab中设置

crontab -e 
@reboot /home/user/test.sh

每次登录自动执行
也可以设置每次登录自动执行脚本,在/etc/profile.d/目录下新建sh脚本,
/etc/profile会遍历/etc/profile.d/*.sh

另外,几个脚本的区别:
(1) /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。

(2) /etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取(即每次新开一个终端,都会执行bashrc)。

(3) ~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次。默认情况下,设置一些环境变量,执行用户的.bashrc文件。

(4) ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。

(5) ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是”父子”关系。

(6) ~/.bash_profile: 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。

【项目名称】:运用C++编程语言开发的视觉图像三维重构系统 【目标用户】:面向有意涉足跨技术领域学习的入门者及资深开发者。适合用作毕业设计课题、教学实践任务、大型作业、工业实训或初级科研项目启动。 【系统概述】: 本系统通过视觉图像数据实现三维物体的几何建模,其核心模块涵盖以下功能: - **基础架构**:集成工程所需的基础数据组织形式,涵盖影像资料、深度图谱、网格模型、视角参数等元素的存储与交互机制。 - **数学运算库**:包含矩阵操作、矢量计算、四元数变换等数学工具,支撑几何计算需求。 - **特征处理单元**:支持SIFT与SURF两类特征识别算法的提取与匹配操作。 - **运动结构复原模块**:实现摄像机位姿推算、三维空间点三角定位及光束法平差等关键技术。 - **多视角立体模块**:通过立体匹配算法生成高密度点云数据。 - **表面重建组件**:将离散点云转化为连续网格曲面。 - **纹理映射单元**:生成贴合模型表面的纹理贴图。 - **应用案例库**:提供典型应用场景的代码示范。 - **缓存目录**:用于暂存运算过程产生的临时文件。 系统以模块化架构确保各功能单元独立可拓展,适用于计算机视觉与图形学领域的算法研究及工程实践。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
<think>我们正在讨论如何在Ubuntu系统中设置开机自动执行脚本。根据用户提供的引用,有多种方法可以实现这一目标。下面我将综合这些方法,并给出一个清晰的步骤指南。 用户引用中提到了几种方法: 1. 使用`update-rc.d`命令将脚本添加到`/etc/init.d/`目录(引用[1]) 2. 使用`/etc/rc.local`文件(引用[2][4]) 3. 使用`systemd`服务(引用[3]) 考虑到Ubuntu的版本差异(特别是Ubuntu 16.04及以后版本默认使用systemd),我将分别介绍这些方法,并重点推荐使用systemd的方法(因为它是目前Ubuntu主流的初始化系统)。 ### 方法一:使用`/etc/rc.local`(适用于较老版本或兼容模式) 在Ubuntu 18.04之前的版本中,通常使用`/etc/rc.local`来设置开机自启动脚本。但在Ubuntu 18.04及以后版本中,默认没有这个文件,需要手动创建并启用服务。 **步骤:** 1. 创建`/etc/rc.local`文件并添加可执行权限: ```bash sudo touch /etc/rc.local sudo chmod +x /etc/rc.local ``` 2. 编辑`/etc/rc.local`文件: ```bash sudo nano /etc/rc.local ``` 内容模板(注意:必须包含`exit 0`): ```bash #!/bin/sh -e # 在这里写你的命令 /path/to/your-script.sh exit 0 ``` 3. 启用`rc-local`服务(Ubuntu 18.04+需要): ```bash sudo systemctl enable rc-local.service ``` 4. 启动服务并检查状态: ```bash sudo systemctl start rc-local.service sudo systemctl status rc-local.service ``` ### 方法二:使用`systemd`服务(推荐) 这是Ubuntu 16.04及以上版本推荐的方法,更灵活且功能强大。 **步骤:** 1. 创建一个服务文件(例如`myscript.service`): ```bash sudo nano /etc/systemd/system/myscript.service ``` 文件内容示例: ```ini [Unit] Description=My Startup Script After=network.target [Service] Type=simple ExecStart=/path/to/your-script.sh TimeoutStartSec=0 Restart=on-failure [Install] WantedBy=multi-user.target ``` 2. 赋予脚本可执行权限: ```bash sudo chmod +x /path/to/your-script.sh ``` 3. 启用服务使其开机启动: ```bash sudo systemctl enable myscript.service ``` 4. 启动服务并检查状态: ```bash sudo systemctl start myscript.service sudo systemctl status myscript.service ``` ### 方法三:使用`cron`的`@reboot`(适用于用户级脚本) 如果你希望以特定用户身份运行脚本,可以使用cron的`@reboot`功能。 **步骤:** 1. 切换到目标用户(例如`ubuntu`): ```bash su - ubuntu ``` 2. 编辑cron表: ```bash crontab -e ``` 3. 添加一行: ``` @reboot /path/to/your-script.sh ``` ### 注意事项 1. **脚本权限**:确保脚本文件有可执行权限(`chmod +x script.sh`) 2. **路径问题**:在脚本中使用绝对路径,因为启动时环境变量可能未完全设置 3. **日志记录**:建议在脚本中重定向输出以便调试,例如: ```bash # 在systemd服务中,可以通过以下方式记录日志 ExecStart=/bin/bash -c '/path/to/your-script.sh >> /var/log/myscript.log 2>&1' ``` 4. **依赖关系**:如果脚本依赖网络或其他服务,需要在服务文件中正确设置`After`和`Requires`(如`After=network-online.target`) ### 验证方法 重启系统后,检查脚本是否执行: ```bash # 查看systemd服务日志 journalctl -u myscript.service # 查看rc.local的执行日志(如果有) grep 'rc.local' /var/log/syslog # 查看cron日志 grep CRON /var/log/syslog ``` §§相关问题§§ 1. 如何设置脚本在系统启动后延迟执行? 2. Ubuntu系统中如何查看开机启动的服务? 3. 如何让脚本在用户登录时自动运行? 4. systemd服务中的`WantedBy`和`RequiredBy`有什么区别? </think>### Ubuntu系统设置开机自动执行脚本的方法 在Ubuntu中设置开机自动执行脚本主要有以下三种方法,根据系统版本和需求选择合适方案: #### 方法一:使用`/etc/rc.local`(推荐简单任务) 1. **创建/编辑rc.local文件** ```bash sudo nano /etc/rc.local ``` 2. **添加脚本内容**(需保留`exit 0`) ```bash #!/bin/sh -e # 你的脚本命令(在exit 0之前) /path/to/your_script.sh & exit 0 ``` 3. **设置执行权限** ```bash sudo chmod +x /etc/rc.local ``` 4. **启用服务**(Ubuntu 18.04+必需) ```bash sudo systemctl enable rc-local.service ``` > 📌 注意:使用`&`让脚本后台运行避免阻塞启动过程[^2][^4] #### 方法二:创建Systemd服务(推荐复杂任务) 1. **创建服务文件** ```bash sudo nano /etc/systemd/system/myscript.service ``` 2. **添加服务配置** ```ini [Unit] Description=My Startup Script After=network.target [Service] ExecStart=/path/to/your_script.sh Restart=on-failure [Install] WantedBy=multi-user.target ``` 3. **启用服务** ```bash sudo systemctl enable myscript.service sudo systemctl start myscript.service ``` > 💡 优势:支持日志监控(`journalctl -u myscript`)、依赖管理、自动重启等[^3] #### 方法三:使用cron定时任务(用户级任务) 1. **编辑crontab** ```bash crontab -e ``` 2. **添加启动指令** ``` @reboot /path/to/your_script.sh ``` > ⚠️ 限制:仅适用于当前用户权限执行 ### 通用注意事项 1. **脚本权限管理** ```bash sudo chmod +x /path/to/your_script.sh # 添加执行权限 sudo chown root:root /path/to/your_script.sh # 设置root所有权 ``` 2. **路径问题** 在脚本中使用绝对路径(启动时`$PATH`未完全初始化) 3. **日志调试** 在脚本开头添加: ```bash exec > /var/log/myscript.log 2>&1 # 重定向输出到日志文件 ``` 4. **启动顺序** 网络服务需添加`After=network-online.target`依赖[^3] ### 验证方法 ```bash # 重启后检查服务状态 sudo systemctl status myscript.service # 检查日志 journalctl -u myscript.service -b # 查看进程 ps aux | grep your_script.sh ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值