Administrator
发布于 2023-08-24 / 0 阅读
0
0

通过systemd使service随系统启动

一、基础

service存放目录:/etc/systemd/system/ service本质是一个unit文件,后缀为.service(这个后缀是给systemd识别的)

二、unit文件示例

[Unit]
Description=This is a service      #描述
Wants=network-online.target
After=network.target               #在network启动后启动

[Service]
User=root                        #运行的用户
Group=root                       #用户组
LimitNOFILE=4096
WorkingDirectory=/home/service/  #工作目录
ExecStart=/home/service/baota_start.sh  #欲运行的脚本
Restart=on-failure               #失败重启
StartLimitInterval=600

[Install]
WantedBy=multi-user.target

说明: 可以用 DescriptionUserExecStartWantedBy 四个元素构成一个最最基本的unit文件。更多的元素请自行搜索。

注意: 确保指定的运行脚本(不是服务)的User有执行脚本的权限!如果脚本会新建/读取/运行文件或文件夹,请确保User具有访问该文件/文件夹的权限。

三、操作

  1. 将自己按照上面示例编辑的.service文件放入服务存放的文件夹
  2. 编写.service中ExecStart指定的.sh
  3. 赋予相应文件相应的权限(一般确保.service属于root且具有执行权限)
  4. 输入以下命令:
# 重载
$ sudo systemctl daemon-reload

# 开机启动service,{xxx.service}为指定的服务文件名
# 指令中的".service"可以省略(即只需输入对应的服务名xxx)。
$ sudo systemctl enable --now {xxx.service}

四、systemctl 常用指令

  • systemctl start {xxx.service} #启动服务(一次性)
  • systemctl restart {xxx.service} #重启服务
  • systemctl disable --now {xxx.service} #禁止服务开机启动
  • systemctl stop {xxx.service} #停止服务
  • journalctl -u {xxx.service} -f #查看服务运行日志

评论