Linux Systemd服务(2021.07.09)

文章目录

  • Linux Systemd服务(2021.07.09)
    • 一、概述
    • 二、配置文件
      • 2.1 Unit
      • 2.2 Service
      • 2.3 Install
    • 三、开机启动
    • 四、启动服务
    • 五、查看状态
    • 六、停止服务
    • 七、重启服务

一、概述

本文将介绍通过systemd来实现服务的自启动。systemd是一套系统启动和管理的工具,字母d是守护进程(daemon)的缩写。

二、配置文件

systemd的配置文件主要放置在/etc/systemd/system//lib/systemd/system目录,如果需要添加服务,只需在目录下添加对应的配置文件即可。例如:

# 添加服务配置文件
$ sudo vim /etc/systemd/system/demo.service
[Unit]
Description=demo # 服务描述
After=network.target # 指定服务依赖的 target[Service]
User=root # 服务运行用户
Group=root # 服务运行用户组WorkingDirectory=/root/water # 服务工作目录
ExecStart=/usr/local/bin/java -jar demo.jar # 服务启动命令
Type=simple # 服务进程启动方式Restart=on-failure # 指定服务何时重启[Install]
WantedBy=multi-user.target # 指定服务所属 target,与自启动相关,一般不用改# 重新加载所有 service 的配置
$ sudo systemctl daemon-reload

2.1 Unit

systemd可以管理所有的系统资源,不同的资源称为Unit(单位),该部分可以定义Unit的元数据,以及配置与其它Unit的关系。主要字段如下:

  • Description:简短描述
  • Documentation:文档地址
  • Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败
  • Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败
  • BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行
  • Before:当前 Unit 必须在该字段指定的 Unit 之前启动
  • After:当前 Unit 必须要在该字段指定的 Unit 之后启动

2.2 Service

Service用来配置 Service,只有 Service 类型的 Unit 才有该部分。主要字段如下:

  • Type:定义启动时的进程行为,它有以下几种值:

    • Type=simple:默认值,执行 ExecStart 指定的命令,启动主进程
    • Type=forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
    • Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
    • Type=dbus:当前服务通过D-Bus启动
    • Type=notify:当前服务启动完毕,会通知 Systemd,再继续往下执行
    • Type=idle:若有其他任务执行完毕,当前服务才会运行
  • User:启动当前服务的用户
  • Group:启动当前服务的用户组
  • WorkingDirectory:当前服务的工作目录
  • ExecStart:启动当前服务的命令
  • ExecStartPre:启动当前服务之前执行的命令
  • ExecStartPost:启动当前服务之后执行的命令
  • ExecReload:重启当前服务时执行的命令
  • ExecStop:停止当前服务时执行的命令
  • ExecStopPost:停止当其服务之后执行的命令
  • RestartSec:自动重启当前服务间隔的秒数
  • Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
  • TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
  • Environment:指定环境变量

2.3 Install

Install用来定义如何启动,以及是否开机启动。主要字段如下:

  • WantedBy:它的值是一个或多个 Target,当前 Unit 激活时(enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中
  • RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号链接会放入/etc/systemd/system目录下面以 Target 名 + .required后缀构成的子目录中
  • Alias:当前 Unit 可用于启动的别名
  • Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit

三、开机启动

通过下面的命令设置服务开机自启动:

$ sudo systemctl enable demo.service

四、启动服务

设置开机启动后,服务并不会立即启动,可以通过下列命令启动服务:

$ sudo systemctl start demo.service

五、查看状态

服务可能会启动失败,通过以下命令查看服务状态:

$ sudo systemctl status demo.service

六、停止服务

可以通过以下命令终止正在运行的服务:

$ sudo systemctl stop demo.service

如果命令没有响应,可以通过以下命令强制kill进程:

$ sudo systemctl kill demo.service

七、重启服务

通过以下命令重启服务:

$ sudo systemctl restart demo.service

参考文章:

  • Systemd 入门教程-命令篇:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
  • Systemd 入门教程-实战篇:https://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html

Linux Systemd服务相关推荐

  1. linux systemd 服务管理脚本简介

    我们运行 linux 服务器的主要目的是通过运行程序提供服务,比如 mysql.web server等.因此管理 linux 服务器主要工作就是配置并管理上面运行的各种服务程序.在 linux 系统中 ...

  2. linux systemd服务,systemd服务管理

    显示所有已启用的Unit(list-units) 因为systemctl命令的默认选项是systemctl list-units,不添加任何选项的话,将显示list-units的结果. 另外在syst ...

  3. Linux之systemd服务配置及自动重启

    Linux之systemd服务配置及自动重启 0 背景 在linux上开发时,往往需要将自己的程序做成服务,并且实现服务开机自动重启,以及服务崩溃后自动重启功能,本文就对该功能的实现做简单介绍,实现方 ...

  4. Linux 之systemd服务简介

    Linux 之systemd服务简介 Systemd机制 systemd是Linux下的一种init软件,作用是提供更优秀的框架以表示系统服务之间的依赖关系,并依次实现系统初始化时服务的并行启动,同时 ...

  5. linux一运行大文件就自动重启,Linux之systemd服务配置及自动重启

    layout: post title: Linux之systemd服务配置及自动重启 date: 2019-09-09 tags: linux --- Linux之systemd服务配置及自动重启 0 ...

  6. linux 自启动服务 SYSV,技术|LFCS 系列第七讲:通过 SysVinit、Systemd 和 Upstart 管理系统自启动进程和服务...

    几个月前, Linux 基金会宣布 LFCS (Linux 基金会认证系统管理员) 认证诞生了,这个令人兴奋的新计划定位于让来自全球各地的初级到中级的 Linux 系统管理员得到认证.这其中包括维护已 ...

  7. CentOS 7下设置Docker代理(Linux下Systemd服务的环境变量配置)

    Docker守护程序使用HTTP_PROXY,HTTPS_PROXY以及NO_PROXY环境变量在其启动环境来配置HTTP或HTTPS代理的行为.无法使用daemon.json文件配置这些环境变量. ...

  8. linux yum安装redis5.0,CentOS 7安装Redis 5.0.5并加入Systemd服务

    记录在CentOS 7下安装Redis 5.0.5并加入Systemd服务的步骤. 1. 安装gcc-c++, tcl yum install gcc-c++ tcl 2. 解压缩, 编译, 测试 t ...

  9. 怎么终止linux的次序运行程序,linux – 如何按特定顺序停止systemd服务

    当特定的systemd服务停止时,如何确保遵循特定的订单?我有几个运行的系统服务/单元,但在各种已安装的分区上使用资源.使用自定义服务安装和卸载这些分区.在自定义安装程序停止之前,需要以特定顺序停止正 ...

最新文章

  1. 2w字 + 40张图带你参透并发编程!
  2. Java数据结构2:堆排序思考
  3. 科学家利用脑机接口让患者正常发声
  4. 《嵌入式 Linux应用程序开发标准教程(第2版)》——1.1 嵌入式Linux基础
  5. python手机版怎么弄-手把手教你如何使用Python向手机发送通知
  6. LBE 隐私卫士原理分析
  7. 业务层勿用继承,不要为了方便舍弃了性能。TʌT不好意思我错了
  8. volatile可以保证原子性吗
  9. vue-cli使用swiper4在ie以及safari报错
  10. Centos7 修改、更换源
  11. Java中构造方法的执行顺序
  12. 三个月备战,终获阿里offer
  13. linux jdk1.8 32位下载永久地址,ubuntu,centos,java
  14. Silverlight中使用Timer的方法
  15. 立体栅格地图_具有立体效果的地图制作
  16. matlab 汉字是方块,linux下Matlab 2020中文字体方框问题解决方法
  17. 四、vue 项目使用高德地图画面(多边形)
  18. 感悟员工和公司之间的情感关系
  19. android 仿飞猪日历,vue 日期选择 类似飞猪
  20. certbot申请通配符域名证书

热门文章

  1. 工程地质计算机应用百度云,工程地质计算机应用
  2. 爬虫技术:携程爬虫阳光问政数据
  3. java-php-python--数字相册管理系统-点赞演示2021计算机毕业设计
  4. 这颗“洋葱”要上市了,低调盈利2亿元能跟上跨境电商队伍么?
  5. 非全研究生业余研究:利用十一假期训练了室内定位模型
  6. 关于python语言数值操作符_下列哪种物质是体内硫酸基的提供者
  7. python黑科技脚本_利用Python实现FGO自动战斗脚本,再也不用爆肝啦~
  8. Linux中安装苹果系统
  9. ORACLE EBS常用表及查询语句(二)
  10. UOS安装 MySQL5.7