Ubuntu18下如何使用rc.local功能

  1. 将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下面来:

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

    查看文件内容:

    vi /etc/systemd/system/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] 块是我们自己编辑新增的

    [Install]
    WantedBy=multi-user.target
    Alias=rc-local.service

    执行
    systemctl daemon-reload

  2. 创建/etc/rc.local文件

    touch /etc/rc.local && chmod 755 /etc/rc.local && vi /etc/rc.local

  3. 编辑rc.local,添加需要开机启动的任务,内容如下:

    #!/bin/bash

    echo "test rc " > /var/test.log
    #请将您的脚本程序 替换到下面的
    /bin/bash /data/sh/auto_restart/index.sh

    exit 0

4、执行执行systemctl daemon-reload,再reboot重启系统。

5、相关脚本
如嫌上面文字繁琐,也可以采用复制下面的代码保存到机器上执行
# vi ubuntu18_rc.local_setup.sh

	#!/bin/bash
	#
	
	ln -sf /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
	###============
	cat >>/etc/systemd/system/rc-local.service<<EOF
	
	[Install]
	WantedBy=multi-user.target
	Alias=rc-local.service
	
	EOF
	###============
	touch /etc/rc.local && chmod 755 /etc/rc.local
	mkdir -p /data/sh/auto_restart/logs
	###============
	cat >>/etc/rc.local<<EOF
	#!/bin/bash
	
	#/bin/bash /data/sh/auto_restart/index.sh
	
	exit 0
	EOF
	###============
	
	systemctl daemon-reload

# chmod 755 ubuntu18_rc.local_setup.sh
# ./ubuntu18_rc.local_setup.sh

6、总结
其实就是利用 systemd 的启动原理, 通过 /etc/systemd/system/rc-local.service 文件来达到启动时执行 /etc/rc.local 文件的目的。

Ubuntu中,`rc.local`是一个特殊的脚本文件,它在系统启动过程中运行,允许用户自定义一些最后执行的命令或设置。默认情况下,Ubuntu并未启用`rc.local`服务,因为它们倾向于鼓励使用更现代的服务管理和初始化系统,如Systemd。 如果你想在Ubuntu中启用并编辑`rc.local`,可以按照以下步骤操作: 1. **查找`rc.local`文件**:在终端中输入 `sudo nano /etc/rc.local`。如果找不到该文件,可能需要先创建,因为它可能被隐藏了。 2. **添加你的命令**:在文件的底部添加你想要在系统启动后执行的命令。例如,如果你想要运行一个备份脚本,就在那里添加一行`/path/to/your/backup_script.sh &`. 3. **保存并关闭**:完成编辑后,按`Ctrl + X`,然后选择`Y`确认保存,接着输入`n`退出nano文本编辑器。 4. **更新权限**:由于`rc.local`在启动后立即执行,所以需要赋予执行权限,使用`sudo chmod +x /etc/rc.local`。 5. **设置开机启动**:为了使`rc.local`在每次启动时自动运行,你需要将其添加到Systemd的`system.slice`中。打开 `/etc/systemd/system/multi-user.target.wants/rc-local.service` 或者创建一个新的服务文件,添加内容如下: ```bash [Unit] Description=Run rc.local scripts at boot time. After=network.target [Service] ExecStart=/bin/bash /etc/rc.local RemainAfterExit=yes [Install] WantedBy=multi-user.target ``` 6. **启动服务**:通过`sudo systemctl enable rc-local.service`将此服务设置为开机启动。 记住,使用`rc.local`可能会导致系统的稳定性问题,尤其是当它包含长时间运行的任务时,因此只应在必要时谨慎使用,并且避免在里面放置过于复杂的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值