您所在的位置:首页 / 知识分享

Ubuntu 16与18 使用 rc.local执行开机启动脚本

2021.02.17

934

在 Ubuntu 16以前,有个很简单的 rc.local ,在这个文件内写上你要执行的命令,在开机后,系统就会以管理员权限去执行这些命令。

Ubuntu 18 开机启动

在 Ubuntu 16以前,有个很简单的 rc.local ,在这个文件内写上你要执行的命令,在开机后,系统就会以管理员权限去执行这些命令。但是,这个启动脚本的控制粒度并不是很精细。
所以,在Ubuntu18 版本开始,Ubuntu使用了 systemd 替代了 initd 管理系统。并且默认已经取消了 /etc/rc.local 文件。

找回 rc.local

配置 rc.local.service

  1. rc.local.service 文件路径
/lib/systemd/system/rc.local.service
  1. 编辑 rc.local.service
vim /lib/systemd/system/rc.local.service
  1. rc.local.service 内容
[Unit] Description=/etc/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8) ConditionFileIsExecutable=/etc/rc.local
After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=no
GuessMainPID=no #这一段原文件没有,需要自己添加 
[Install] WantedBy=multi-user.target
Alias=rc-local.service
  1. rc.local.service 内容解释

    [Unit] 区块:启动顺序与依赖关系。
    
     ConditionFileIsExecutable=/etc/rc.local
     After=network.target
    
     ConditionFileIsExecutable指定了执行的文件,
    
     After 表示在 network.target 这个target后面进行执行。也就是网络启动完成之后,执行 /etc/rc.local 文件。
    
     [Service] 区块:启动行为,如何启动,启动类型。
    
     Type=forking
     ExecStart=/etc/rc.local start
     TimeoutSec=0
     RemainAfterExit=yes
     GuessMainPID=no
    
     [Install] 区块,定义如何安装这个配置文件,即怎样做到开机启动。
    
     [Install]
     WantedBy=multi-user.target
     Alias=rc-local.service
    
     [Install] 块是我们自己编辑新增的。
    					

添加服务文件

添加软链接,将 /lib/systemd/system/rc.local.service 链接到 /etc/systemd/system/rc.local.service
系统在开机后会自动去 /etc/systemd/system/ 目录下读取需要启动的服务配置

ln -s /lib/systemd/system/rc.local.service /etc/systemd/system/rc.local.service

新建 rc.local 文件

vim /etc/rc.local

写入启动命令

#!/bin/bash # 将你需要执行的命令写在这里,禁止写入死循环命令 echo "hello" > /home/test1.log exit 0
设置文件执行权限
chmod 755 /etc/rc.local

如果你是在 /etc/systemd/system/ 目录下创建的文件,也要加上执行权限。

验证

重启主机,检查 /home/ 下是否有 test1.log 文件。
如果一切正常,在 /home/test1.log 文件内,可以看到 hello

相关新闻

解决CentOS6停止更新支持后yum源失效

2020.12.17

1580

最近CentOS 6已经停止更新支持,同时官方也把yum源删除了,目前CentOS 6系统使用yum命令安装软件包基本都是失败,因此需要更换yum源。

Ubuntu如何挂载U盘的方法

2021.02.17

1648

Ubuntu如何挂载U盘的方法