ubuntu升级16.04之后-systemd设置开机启动

ubuntu从16.04开始不再使用initd管理系统,改用systemd。 和centos一样,升级到centos7之后使用systemd替代init.d
然而systemd笔者并不常用,改变太大,跟之前的完全不同。

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

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

注:因为开机时,Systemd只执行/etc/systemd/system目录里面的配置文件。这也意味着,如果把修改后的配置文件放在该目录,就可以达到覆盖原始配置的效果 

链接过来:

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

注:使用systemctl enabled rc-local.service 同样可以达到效果,

systemctl is-enabled unit #显示某个unit服务是否建立了启动链接

systemctl enabled unit #为某个unit服务创建启动链接

查看rc-local.service内容:
cd /etc/systemd/system/

vim rc-local.service


#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no

[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 "test test " > /var/test_boot_up.log

5、执行reboot重启系统验证OK。

最后,说一下/etc/systemd/system/下的配置文件(XXXX.service), 
其中有三个配置项,[Unit] / [Service] / [Install] 
1) [Unit] 区块:启动顺序与依赖关系。 
2) [Service] 区块:启动行为,如何启动,启动类型。 

3) [Install] 区块,定义如何安装这个配置文件,即怎样做到开机启动。


笔者的ubuntu版本为17.10,如果不成功,使用命令

systemctl enable rc-local.service

猜你喜欢

转载自blog.csdn.net/fenglepeng/article/details/80175621
今日推荐