ubuntu18.04设置开机自动启动脚本(以自动启动odoo命令行为例讲解)-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

简介
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启动脚本
查看所有服务

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

修改服务配置

sudo vi /lib/systemd/system/rc-local.service

打开后可以看到文件包含[Unit]和[Service]两个部分内容

一般启动文件需要三个部分

[Unit] 启动顺序与依赖关系
[Service] 启动行为, 如何启动启动类型
[Install] 定义如何安装这个配置文件即怎样做到开机启动
在文件最后加入以下内容

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

创建执行文件

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.
time=$(date)
echo $time > /odoo16/rc-local-info.log	# 这个是你的实际接收脚本启动日志的路径
# add your scritp here
python3 /odoo16/src/odoo-bin -c /odoo16/odoo.conf	# 这个是你的实际项目路径
exit 0

为rc.local加执行权限:

sudo chmod +x /etc/rc.local

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

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

启用服务并启动

sudo systemctl enable rc-local
sudo systemctl start rc-local.service      # 一直等待可以不用理它重启测试即可
sudo systemctl status rc-local.service

重启检查:

cat /odoo16/rc-local-info.log

# Thu 26 Oct 2023 11:36:09 AM CST
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Ubuntu