• Ubuntu 20.04 设置开机自启脚本


    Ubuntu 16.04 以后的版本不再支持 update-rc.d 方式添加开机自启脚本,只能使用 systemctrl 命令进行添加。

    下面介绍三种添加开机自启脚本的方法,所测试的系统为 Ubuntu 20.04

    使用 rc-local.service

    rc-local.service 是系统自带的一个开机自启服务,但是在 ubuntu 20.04 上,该服务默认没有开启。

    1. 修改rc-local.service

    在终端输入: sudo vim /lib/systemd/system/rc-local.service

    在文件的最后面添加 [Install] 段的内容,

    在这里插入图片描述

    2. 创建 /etc/rc.local

    Ubuntu 20.04 默认不存在 /etc/rc.local,需要自己创建,

    在这里插入图片描述

    在该文件中添加脚本内容,即开机脚本需要实现的功能,这里只是简单地实现了向某一个文件里填充数据功能。

    在这里插入图片描述

    3. 修改 /etc/rc.local 权限

    脚本要想运行,还需要设置脚本的可执行权限,使用 sudo chmod 777 /etc/rc.localsudo chmod +x /etc/rc.local 修改该文件的权限。

    在这里插入图片描述

    4. 启动 rc-local.service

    输入 sudo systemctl enable rc-local.servicesudo systemctl enable rc-local 使能 rc-local 服务,实际上就是在 /etc/systemd/system/ 目录下创建了一个软链接

    在这里插入图片描述

    5. 检查服务状态

    使用 sudo systemctl status rc-local.service 查看 rc-local 服务的状态, 显示 loaded 和 enabled。

    在这里插入图片描述

    6. 重启验证

    使用 gnome-session-properties

    这是 Ubuntu 自带的命令,可以在用户登录时自动执行某个程序,在终端输入 gnome-session-properties

    在这里插入图片描述
    添加一个新的启动程序,选中一个已经编写好的脚本,完成添加。

    在这里插入图片描述

    该脚本的内容如下:

    分别向普通用户的文件和系统目录下的文件写数据,

    在这里插入图片描述

    由于这个自启脚本是普通用户设置的,所以无法修改系统级的文件(需要 root 权限)。

    在这里插入图片描述

    这种方法只能设置当前用户的自启脚本,即在当前用户登录后才会执行。

    自定义开机自启服务

    除了系统自带的 rc-local.service,我们也可以自定义一些服务,用来开机自启,方法如下:

    1. 创建 service 文件

    新建一个 .service 文件,推荐放在 /lib/systemd/system//etc/systemd/system/ 目录下,也可以像我一样,放在任意位置,只不过在打开文件时可能不会出现高亮和彩色字体。下面是我的 service 文件内容,仅供参考,我的文件命名为 :MyService.service

    在这里插入图片描述
    这里做个简单的解释(仅供参考):

    Description 是 service 文件的描述,随便填写
    After 表示该服务的依赖关系,看其他人都写这个,我也写了。。
    ExecStart 表示服务要启动的程序(或脚本)
    WantedBy 指的是表示该服务所属 targe,multi-user.targe 表示多用户命令行状态

    2. 编写服务对应的程序

    服务对应的程序即开机要运行的脚本程序,下面是我的测试脚本,向指定文件写入指定数据。

    在这里插入图片描述

    3. 启动服务

    使用 systemctl enable /home/test/MyService.service 启动服务

    (如果.service 文件不在 /lib/systemd/system//etc/systemd/system/ 目录下,则需要填服务文件的绝对地址)

    这个操作和上面的 rc-local 服务相同,它会在 /etc/systemd/system/ 等目录下创建 .service 文件的软链接。

    在这里插入图片描述

    此时查看该服务文件的状态,显示已载入(loaded),但是未激活,这是正常的(暂时不知道为什么,能用就行)。

    这里的服务文件就不用填绝对路径,因为它已经被添加到了系统服务管理中,而且填绝对地址反而会报错,后面用到的命令同理。

    在这里插入图片描述
    4. 开始服务

    systemctl start MyService.service 可以单次运行服务程序,enable 是启动服务,服务对应的脚本在(下次)开机后才会执行,而使用 start,就能立刻执行服务程序。

    在这里插入图片描述

    查看服务状态,比刚才多了一些内容,可以断定服务程序应该执行成功了,查看对应的文件,发现有了对应的数据,说明服务程序的确成功运行了。

    在这里插入图片描述

    5. 重启验证

    删除刚才生成的测试文件,重启系统,开机后依然会自动生成指定文件及数据,测试成功:

    在这里插入图片描述

  • 相关阅读:
    指针相关面试题目
    【Python】Python进阶
    电子行业ERP解决方案
    [Kotlin Tutorials 22] 协程中的异常处理
    第一章 - wxFormBuilder + Python实现日记本工具图形界面
    C/C++基础
    Kafka 分区
    centos7离线时间同步
    幂次方表达:p1010
    线性代数学习笔记6-4:行列式的应用(用伴随矩阵求逆矩阵、克莱姆法则解方程、行列式求面积/体积)
  • 原文地址:https://blog.csdn.net/weixin_43772810/article/details/126760777