linux设置开机自启 etc rt.d,Ubuntu 18.04没有rc.local文件如何设置脚本开机自动启动...

从Ubuntu18.04 开始,系统不再使用initd管理系统,而是改用systemd。虽然systemd设计更加合理和友好,在红帽系上也有使用,但改变还是太大,跟之前的完全不同。而且Ubuntu 18.04中连/etc/rc.local文件也没有了,这让自己写的脚本开机自动启动的设置变的麻烦,也不想为了一个脚本去写systemd配置文件。

为了像以前一样,在/etc/rc.local中设置开机启动程序,需要以下几步:

1、原理

systemd 默认会读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接 /lib/systemd/system/ 下的文件。一般系统安装完 /lib/systemd/system/ 下会有 rc-local.service 文件,即我们需要的配置文件。

d43147d9e3086b6faf839ac6f9c389ae.png

target 用于指定什么时候启动,例如查看target:ll /lib/systemd/system|grep target

89b902849ffa15b103771c98b1aace8e.png

1.1、将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录。

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

1.2、查看文件内容

cat /etc/systemd/system/rc-local.service

1cb0ef027965f15e9b896d41d5ed090f.png

说明:

[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

1.3、定义如何安装这个配置文件,即怎样做到开机启动。

Install 区块:

[Install]

WantedBy=multi-user.target

Alias=rc-local.service

这个是我们自己编辑新增的。

知道原理和配置好后,接下来就比较简单了。

2、创建/etc/rc.local

touch /etc/rc.local

3、设置可执行权限

chmod 755 /etc/rc.local

4、编辑rc.local,添加需要开机启动的任务

例如:

#!/bin/bash

echo `date` >>/tmp/rt.log 2>&1

5、reboot重启系统,查看是否生效

6、总结

其实就是利用 systemd 的启动原理, 通过 /etc/systemd/system/rc-local.service 文件来达到启动时执行 /etc/rc.local 文件的目的。不仅仅是ubuntu 18.04有这个问题,debian 9也会碰到,方法使用。没有/etc/rc.local文件,熟悉的开机自动启动的设置就配置好了。

参考链接:https://www.centos.bz/2018/05/ubuntu-18-04-rc-local-systemd%E8%AE%BE%E7%BD%AE/

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你的 Linux 系统没有 rc.local 文件,则需要根据不同的发行版进行配置。以下是一些常见的 Linux 发行版的开机自启设置方法: 1. Ubuntu 16.04 及之前版本: Ubuntu 16.04 及之前版本使用 upstart 管理系统服务,可以通过以下步骤进行开机自启设置: - 在 /etc/init 目录下创建一个新的 .conf 文件,例如: ``` sudo nano /etc/init/myscript.conf ``` - 在该文件中添加以下内容: ``` description "My script service" start on startup task exec /usr/bin/python3 /home/user/myscript.py ``` 其中,`description`是服务的描述,`start on startup`表示在系统启动自动启动,`exec`是需要执行的命令或脚本。 - 保存文件并退出编辑器。 - 重启系统,使修改生效。 2. Ubuntu 18.04 及之后版本: Ubuntu 18.04 及之后版本使用 systemd 管理系统服务,可以通过以下步骤进行开机自启设置: - 在 /etc/systemd/system 目录下创建一个新的 .service 文件,例如: ``` sudo nano /etc/systemd/system/myscript.service ``` - 在该文件中添加以下内容: ``` [Unit] Description=My script service After=network.target [Service] ExecStart=/usr/bin/python3 /home/user/myscript.py WorkingDirectory=/home/user/ Restart=always User=root [Install] WantedBy=multi-user.target ``` 其中,`Description`是服务的描述,`ExecStart`是需要执行的命令或脚本,`WorkingDirectory`是命令或脚本所在的目录,`User`是执行命令或脚本的用户。 - 保存文件并退出编辑器。 - 启用该服务并设置开机自启动: ``` sudo systemctl daemon-reload sudo systemctl enable myscript.service ``` - 重启系统,使修改生效。 3. CentOS 7 及之后版本: CentOS 7 及之后版本使用 systemctl 管理系统服务,可以通过以下步骤进行开机自启设置: - 在 /etc/systemd/system 目录下创建一个新的 .service 文件,例如: ``` sudo nano /etc/systemd/system/myscript.service ``` - 在该文件中添加以下内容: ``` [Unit] Description=My script service After=network.target [Service] ExecStart=/usr/bin/python3 /home/user/myscript.py WorkingDirectory=/home/user/ Restart=always User=root [Install] WantedBy=multi-user.target ``` 其中,`Description`是服务的描述,`ExecStart`是需要执行的命令或脚本,`WorkingDirectory`是命令或脚本所在的目录,`User`是执行命令或脚本的用户。 - 保存文件并退出编辑器。 - 启用该服务并设置开机自启动: ``` sudo systemctl daemon-reload sudo systemctl enable myscript.service ``` - 重启系统,使修改生效。 以上是一些常见的 Linux 发行版的开机自启设置方法,如果还有问题,请告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值