ubuntu18.04设置开机自动启动脚本

简介

ubuntu作为服务器使用时,常常需要在机器重启时能自动启动我们开发的服务。
Ubuntu 16.10开始不再使用initd管理系统,改用systemd,包括用systemctl命令来替换了service和chkconfig的功能。
systemd 默认读取 /etc/systemd/system 下的配置文件,该目录下的文件会链接/lib/systemd/system/下的文件。
不同于以往的版本,ubuntu18.04默认不带/etc/rc.local文件,我们需要通过配置来让rc.local.service生效。
然后我们就可以像以前那样,直接把启动脚本写入/etc/rc.local文件,这样机器启动时就会自动运行它。
除了常规的设置启动脚本以外,本文还介绍一下通用的添加自动启动服务的一般方法。

rc.local启动脚本

1.查看所有服务

ls /lib/systemd/system,可以看到很多服务,这样不便于确认指定的服务是否存在
ls /lib/systemd/system | grep rc,找到我们关心的rc-local.service服务

2.修改服务配置

sudo vi /lib/systemd/system/rc-local.service
打开后可以看到,文件包含[Unit]和[Service]两个部分内容
一般启动文件需要三个部分:
[Unit] 启动顺序与依赖关系
[Service] 启动行为, 如何启动,启动类型
[Install] 定义如何安装这个配置文件,即怎样做到开机启动

在文件最后加入以下内容

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

3.创建执行文件

sudo vi /etc/rc.local
写入以下内容:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

echo "this shows rc.local is start onboot" > /usr/local/rc-local-info.log
# add your scritp here
exit 0

为rc.local加执行权限: sudo chmod +x /etc/rc.local

4.建立软链接

systemd 默认读取 /etc/systemd/system 下的配置文件, 所以还需要在 /etc/systemd/system 目录下创建软链接

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

5.启用服务并启动

sudo systemctl enable rc-local
sudo systemctl start rc-local.service
sudo systemctl status rc-local.service

6.重启检查:

cat /usr/local/rc-local-info.log

通用服务创建

请按以下步骤进行:

1.创建一个systemd服务

比如创建名为my-serverA的服务:sudo vi /etc/systemd/system/my-serverA.service
将以下内容写入文件

[Unit]
Description=/etc/my_serverA.sh Compatibility
ConditionPathExists=/etc/my_serverA.sh
 
[Service]
Type=forking
ExecStart=/etc/my_serverA.sh start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
 
[Install]
WantedBy=multi-user.target

2.创建可执行文件my_serverA.sh

sudo vi /etc/my_serverA.sh

echo "this shows my_serverA.sh is start onboot" > /usr/local/my_serverA.start.log
# add your scritp here
# my_serverA
exit 0

为my_serverA.sh加执行权限: sudo chmod +x /etc/my_serverA.sh

3.启用my_serverA服务

sudo systemctl enable my_serverA

4.启动服务并打印状态

sudo systemctl start my_serverA.service
sudo systemctl status my_serverA.service

5.重启以验证

cat /usr/local/my_serverA.start.log

两种方法的流程大概相同,这与Linux的服务启动机制有关,只要我们设置好,服务

reference

1.ubuntu18.04设置开机自动启动脚本
2.Ubuntu18.04 开机自启动脚本

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值