Linux系统如何设置开机自启脚本

news2024/12/27 4:38:01

Linux系统开启自启脚本的配置,我这里记录了三种办法,对于绝大多数linux系统,这三种方法里肯定有合适的。

1. 设置/etc/rc.local文件

/etc/rc.local文件是 /etc/rc.d/rc.local文件的软连接,rc.local文件本质上就是一个shell脚本
在我的电脑里,内容是是这样的:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
#此脚本在每个多用户运行级别结束时执行(没太懂,只知道实在开机时候运行)

# Make sure that the script will "exit 0" on success or any other value on error.
#确保脚本在成功时以“exit 0”退出,在执行出错时以其他值退出。

# In order to enable or disable this script just change the execution bits.
#启用或禁用该脚本,需更改执行权限

# By default this script does nothing.
#默认情况下,该脚本什么都不做
exit 0

不同的计算机,/etc/rc.local脚本的内容可能有所不同,但是大致意思都差不多,也就是这个脚本开机的时候会被执行一遍。
所以,我们可以在里边添加我们自己的开机启动项,比如我的自启脚本test.sh内容如下:

#!/bin/bash
file="test.txt"
echo 'test shell to this file' >> $file

那我就在rc.local的“exit 0”前边加上执行命令,如果文件最后一行不是“exit 0”,把自启指令写在结尾就行,写完之后的rc.local

#!/bin/sh -e
#注释省略
/home/lfh/test.sh
exit 0

然后还需要给rc.local赋予可执行权限:

sudo chmod +x /etc/rc.local

重启计算机,就可以发现test.sh同级目录下边多了一个test.txt,脚本自启成功!
在这里插入图片描述

死循环脚本:以上是针对单次脚本,也就是可以立马执行完的脚本,如果脚本是死循环脚本(脚本不会自动退出),情况有所不同。

我们把前边的test.sh稍作修改:

#!/bin/bash
file="test.txt"
while((1))
do
echo 'test shell to this file' >> $file
sleep 1
done

这个脚本里边有死循环,是一个典型的死循环脚本,没有任何退出判断,如果还按上面的方式写,就会堵塞开机进程,导致计算机开不了机,具体原因,可以参考这篇文章。
对于死循环脚本,应当这么写:

/home/lfh/test.sh &

后边加上一个空格和一个&,意思是非阻塞模式执行脚本,这样便不会导致开不了机了。

多脚本:如果你有多个开机脚本,按照同样的方式,一行一个即可

#!/bin/sh -e
#注释省略
/home/lfh/test1.sh &
/home/lfh/test1.sh &
/home/lfh/test1.sh &
 ......
exit 0

2. 使用systemd服务

有的系统的没有/etc/rc.local文件,就没法直接使用第一种办法了,比如ubuntu18.04及以上的版本,/etc/目录下就没有rc.local文件

这是因为Ubuntu 16.10开始不再使用 initd 管理系统,改用 systemd,包括用 systemctl 命令来替换了 service 和 chkconfig 的功能

这种情况下,我们依然可以使用/etc/rc.local来添加自启脚本

打开终端,打开/lib/systemd/system/rc-local.service脚本,看到下边内容
在这里插入图片描述rc-local.service文件里边说明了以/etc/rc.local作为自启动脚本,虽然Ubuntu18.04版本废弃了/etc/rc.local脚本,但是在systemd服务里边保留了以/etc/rc.local脚本为自启的服务,也就是rc-local.service这个服务

首先要在rc-local.service结尾添加

[Install]  
WantedBy=multi-user.target

由于没有/etc/rc.local脚本,所以我们要手动创建一个

sudo touch /etc/rc.local
sudo chmod +x /etc/rc.local

然后就可以向脚本里添加我们的自启项,剩下的就与第一种方法一致了
写个示例:

#!/bin/sh
echo "auto start success" > /usr/local/text.log
exit 0

然后,还需要启动systemdrc-local.service服务

sudo systemctl enable rc-local
sudo systemctl start rc-local.service

重启计算机,查看脚本是否生效。

3. 放在/etc/profile.d目录下

这是一个简单粗暴的办法,系统开机的时候,/etc/profile脚本会遍历执行/etc/profile.d/目录下的.sh脚本

在这里插入图片描述
说实话,我并没有完全看明白这段代码到底是以何种方式执行脚本,我猜大概是以堵塞的形式运行的。

如果脚本是单次执行的脚本,这样做是没有问题的,唯一的疑问是如果自启脚本是死循环脚本,会不会堵塞开机进程。

对于这个问题,我没有去进行验证,不过我想到了一个巧妙的办法来规避此问题。

那就是在/etc/profile.d/下边新建一个.sh脚本,比如就叫myAutoStart.sh,然后在myAutoStart.sh里边写上我们需要的自启脚本。myAutoStart.sh相当于一个中介,是一个单次脚本,虽然我们不能控制/etc/profile的执行方式,但是我们可以控制myAutoStart.sh调用我们自启脚本的方式。

这样的好处在于,我完全不需要关心/etc/profile到底以哪种方式执行的脚本。

下面是我的例子

myAutoStart.sh脚本放在/etc/profile.d目录下边,记得赋予可执行权限
在这里插入图片描述

自启脚本test.sh内容:
在这里插入图片描述
重启电脑即可

不知道你有没有发现,/etc/profile本质是也是个自启脚本,在最后面执行自启脚本也是可以的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电商TO B背后:谁在重构产业带?

在这盘产业带大旗里,京东、淘宝、拼多多正在成为鲜活的新注解。 作者|思杭 编辑|皮爷 出品|产业家 有一座城,这里的百姓在40年前靠“鸡毛换糖”起家,他们聚集了全国各地的商品,再转卖出去。这样一来,就形成了销路…

金三银四最近一次面试,被阿里P8测开虐惨了.....

都说金三银四涨薪季,我是着急忙慌的准备简历——5年软件测试经验,可独立测试大型产品项目,熟悉项目测试流程...薪资要求?5年测试经验起码能要个20K吧 我加班肝了一页半简历,投出去一周,面试电话倒是不少&a…

itop-3568开发板驱动学习笔记(17)内核中断

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录中断基础中断中断上下文中断号中断源类型内核中断 API获取中断号中断申请释放中断禁止中断使能中断实验程序中断基础 中断 CPU 在正常运行期间,由外部或者内部引起的事件,让 CPU 停下…

研报精选230411

目录 【行业230411华安证券】智能家居行业深度:ChatGPT等大模型催化智能家居行业进一步发展【行业230411信达证券】食品饮料行业2023年第12周周报:从当前时间点看今年液奶的投资机会【行业230411东方财富证券】食品饮料行业专题研究:BC两端需…

2023年信息安全推荐证书

随着网络安全行业的不断升温,相关的认证数量也不断增加,对于在网络安全行业发展的人才来说,提升职业竞争力最有效的办法之一,就是取得权威认证。 那么如何从繁多的适合网络安全从业者的证书中选择含金量高、发展潜力大的证书&…

Java分布式事务(七)

文章目录 🔥Seata提供XA模式实现分布式事务_业务说明🔥Seata提供XA模式实现分布式事务_下载启动Seata服务🔥Seata提供XA模式实现分布式事务_搭建聚合父工程构建🔥Seata提供XA模式实现分布式事务_转账功能实现上🔥Seata提供XA模式实现分布式事务_转账功能实现下🔥Se…

什么是车规级芯片?

目录 1、AEC-Q系列标准 2、ISO26262功能安全标准 芯片按照应用场景,通常可以分为消费级、工业级、车规级和军工级四个等级,其要求依次为:军工>车规>工业>消费。 车规级芯片,顾名思义,是应用到汽车中的芯片…

GMP调度

目录 A1 基础 协程 映射关系 N:1关系 1:1关系 M:N关系 概念 G M P go协程 GM模型 GMP模型 设计策略 复用线程 并行利用 抢占 全局G队列 "go func()"调度过程 ​编辑 特殊的M0和G0 M0 G0 Go调度器执行过程全解析 场景1 场景2 场景3 场景…

栈实现学生信息管理(C语言)

文章目录Stack.hmain.cStack.c用栈实现学生信息管理。这里放一下有哪些文件。Stack.h #pragma once防止库函数的重复引用,因为库函数会在预编译的时候在程序中展开,会增大程序的体积。   通过typedef对数据重命名,之后需要修改数据就十分方…

C/C++|物联网开发入门+项目实战|C语言基础|玩转c代码---从输入输出开始-学习笔记(6)

文章目录玩转c代码---从输入输出开始参考教程:C语言编程:一本全面的C语言入门教程(第3版)第16章需要掌握的内容需要了解的内容常见的人机交互接口串口的输入输出PC常用的几个输入输出函数示例代码3 printf函数使用难点分析A.格式控制字符串的基本形式:示…

【毕业论文】| 基于Unity3D引擎的冒险游戏的设计与实现

📢博客主页:肩匣与橘 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由肩匣与橘编写,首发于CSDN🙉 📢生活依旧是美好而又温柔的,你也…

NVIDIA CUDA核函数编写注意事项之In-place

CUDA系列文章目录 文章目录CUDA系列文章目录前言总结参考资料前言 CUDA(Compute Unified Device Architecture,统一计算架构)是由NVIDIA所推出的一种集成技术,是其对于GPGPU(A General-Purpose Graphics Processing U…

【源码解析】JDK 动态代理实现

基本流程 主方法 在该方法中,我们呈现了在日常使用 JDK 动态代理机制的方法。 public class VehicleDynamicProxy { /** * 被代理对象 */ public Vehicle targetVehicle; public VehicleDynamicProxy(Vehicle targetVehicle) { this.targetVehicle target…

注册中心要集成 SpringCloud实现负载均衡,需要哪些接口和规范?

前几天有个大兄弟问了我一个问题,注册中心要集成SpringCloud,想实现SpringCloud的负载均衡,需要实现哪些接口和规范。 既然这个兄弟问到我了,而我又刚好知道,这不得好好写一篇文章来回答这个问题,虽然在后面…

Omniverse Extensions Command 写在其他.py 文件内 导致找不到Command 无法运行 不生效 的解决方案

提要: Command扩展不在extension.py内 例如我的Command:ScatterCreatePointInstancerCommandLJ 在 commands.py 内 然后使用时报错: 2023-04-10 18:16:11 [Error] [omni.kit.commands.command] Cant execute command: "ScatterCreat…

基于springboot和ajax的简单项目 05 日志界面的查找功能

01.这个是基于input标签的查找功能。 02.修改更新table标签的函数,把username这个参数,加到getjson函数的params中,实现依靠username来查询数据。 var username$("#searchNameId").val();//如下语句的含义是什么?动态在…

STM32F4_PWM输出详解

目录 1. PWM简介 2. PWM原理 3. 定时器PWM输出比较 4. 定时器PWM捕获/比较通道 5. PWM输出相关寄存器 5.1 捕获/比较模式寄存器 TIMx_CCMR1 5.2 捕获/比较使能寄存器 TIMx_CCER 5.3 捕获/比较寄存器 TIMx_CCR1~4 5.4 刹车(断路)和死区寄存器 TIMx_BDTR 6. 库函数配置…

【Python_Scrapy学习笔记(一)】Scrapy框架简介

Scrapy框架简介 前言 Scrapy 框架是一个用 python 实现的为了爬取网站数据、提取数据的应用框架,使用 Twisted 异步网络库来处理网络通讯,可以高效的完成数据爬取。本文主要介绍 Scrapy 框架的构成与工作原理。 正文 1、Scrapy安装 Windows安装&…

【Unity UPR】造个获取深度法线纹理的轮子

描边需要深度法线纹理的加持,效果才能达到最好,但URP下很多版本不支持直接获取_CameraNormalsTexture,而我本人也尝试了一下在12.1.7下偷懒直接拿SSAO里的Depth Normal图, 虽然也能实现吧,但是需要打开SSAO的同时&…

商务接待广州考斯特商务租车详解!

进入四月份以来,全国各个地区都有很多商务活动举办,广州也不例外,广州很多地区都有商务活动的需求。因此不少主办方都需要商务租车来接待客户,而丰田考斯特是市面上常见的一款高端中巴车,主要是因为考斯特的可靠性、安…