二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • 最佳实践

  • 迎刃而解

  • Nginx

  • Php

  • Zabbix

  • AWS

  • Prometheus

  • Grafana

  • Loki

  • CentOS

  • Supervisord

  • Systemd

    • CentOS7主机使用systemd管理应用
      • 1,了解配置内容。
      • 2,定义一个示例配置。
      • 3,整理 systemctl 命令。
      • 4,systemd 日志管理。
    • 使用systemctl管理tomcat多实例
  • Docker

  • Docker-Compose

  • Rancher

  • Ansible

  • OpenLdap

  • GitLab

  • GitHub

  • Etcd

  • Consul

  • RabbitMQ

  • Kafka

  • Mysql

  • MongoDB

  • OpenVPN

  • Kvm

  • VMware

  • 配置文件详解

  • Other

  • 运维观止
  • Systemd
二丫讲梵
2019-02-18
目录

CentOS7主机使用systemd管理应用

文章发布较早,内容可能过时,阅读注意甄别。

systemd 有很丰富很详细的用法,而这些内容不是本文想要介绍的,本文想着重说明一下如何通过自定义配置来管理一些常用的,不常用的服务。

# 1,了解配置内容。

systemd 的配置文件主要放在/usr/lib/systemd/system目录,也可能在/etc/systemd/system目录。

现在来看一个系统的配置文件来学习一下:

$cat sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service
[Service]
Type=forking
PIDFile=/var/run/sshd.pid
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

这个是我们常用的 sshd 的配置文件内容,下边简单解释一下,以帮助理解。

  • [Unit] 区块:启动顺序与依赖关系。
    • Description:当前配置文件的描述信息。
    • Documentation:帮助信息。
    • After:表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动
    • Wants:表示 sshd.service 与 sshd-keygen.service 之间存在” 弱依赖” 关系,即如果”sshd-keygen.service” 启动失败或停止运行,不影响 sshd.service 继续执行。
  • [Service] 区块:启动行为
    • Type:定义启动类型。详细了解点此 (opens new window)。
    • PIDFile:服务的 pid 文件路径。
    • EnvironmentFile:指定当前服务依赖的环境参数文件。
    • ExecStart:定义启动进程时执行的命令。
    • ExecReload:重启服务时执行的命令
    • KillMode:定义 Systemd 如何停止 sshd 服务。
    • Restart:定义了 sshd 退出后,Systemd 的重启方式。
    • RestartSec:表示 Systemd 重启服务之前,需要等待的秒数。上面的例子设为等待 42 秒。
  • [Install] 区块:定义如何安装这个配置文件,即怎样做到开机启动。
    • WantedBy:表示该服务所在的 Target。multi-user.target 表明当系统以多用户方式(默认的运行级别)启动时,这个服务需要被自动运行。

申明

原创文章eryajf,未经授权,严禁转载,侵权必究!此乃文中随机水印,敬请读者谅解。

Copyright 二丫讲梵 (opens new window) 版权所有

# 2,定义一个示例配置。

掌握上边的一些信息之后,就可以自定义一些配置来管理系统当中的一些应用了。

image

比如我个人日常写笔记用的工具就是自己搭建的 mindoc (opens new window),日常使用都是通过命令行进行启动的。

日常管理是这样式儿的:

/opt/doc-wiki/mindoc_linux_amd64 &
1

现在添加配置通过 systemd 来管理。

vim /usr/lib/systemd/system/mindoc.service
添加如下配置:
[Unit]
Description=Mindoc
After=network.target
[Service]
Type=simple
ExecStart=/opt/doc-wiki/mindoc_linux_amd64
Restart=on-failure
[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
10
11

保存之后,先加载一下。

检视和控制 systemd 的主要命令是 systemctl。该命令可用于查看系统状态和管理系统及服务。

$ systemctl daemon-reload
1

然后启动一下验证下:

$ systemctl start mindoc
$ systemctl status mindoc
● mindoc.service - Mindoc
   Loaded: loaded (/usr/lib/systemd/system/mindoc.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-02-18 15:23:39 CST; 1s ago
 Main PID: 15060 (mindoc_linux_am)
   CGroup: /system.slice/mindoc.service
           └─15060 /opt/doc-wiki/mindoc_linux_amd64
Feb 18 15:23:39 wiki systemd[1]: Started Mindoc.
Feb 18 15:23:39 wiki systemd[1]: Starting Mindoc...
Feb 18 15:23:39 wiki mindoc_linux_amd64[15060]: 2019/02/18 15:23:39.123 [I] [command.go:34]  正在初始化数据库配置.
Feb 18 15:23:39 wiki mindoc_linux_amd64[15060]: 2019/02/18 15:23:39.125 [I] [command.go:86]  数据库初始化完成.
Feb 18 15:23:39 wiki mindoc_linux_amd64[15060]: MinDoc version => v2.0-beta.2
Feb 18 15:23:39 wiki mindoc_linux_amd64[15060]: build time => Thu Nov 29 09:01:12 UTC 2018
Feb 18 15:23:39 wiki mindoc_linux_amd64[15060]: start directory => /opt/doc-wiki/mindoc_linux_amd64
Feb 18 15:23:39 wiki mindoc_linux_amd64[15060]: 2019/02/18 15:23:39.190 [I] [asm_amd64.s:1333]  http server Running on http://:8181
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

再访问一下,可以看到能够正常使用。 然后还可以加入到开机自启动。

[root@wiki system]$systemctl enable mindoc
Created symlink from /etc/systemd/system/multi-user.target.wants/mindoc.service to /usr/lib/systemd/system/mindoc.service.
1
2

那么其他的服务,也基本上也可以参照如上配置,来进行添加使用了。

# 3,整理 systemctl 命令。

  • 显示所有单元状态
systemctl 或 systemctl list-units
1
  • 只显示服务单元的状态
systemctl --type=service
1
  • 验证 sshd 服务当前是否活动
systemctl is-active sshd
1
  • 启动,停止和重启 sshd 服务
systemctl start sshd.service
systemctl stop sshd.service
systemctl restart sshd.service
1
2
3
  • 重新加载配置
systemctl reload sshd.service
1
  • 列出活动状态的所有服务单元
systemctl list-units --type=service
1
  • 列出所有服务单元
systemctl list-units --type=service --all
1
  • 查看所有的服务单元是否为开机自启
systemctl list-unit-files --type=service
1
  • 列出依赖的单元
systemctl list-dependencies sshd
1
  • 验证 sshd 服务是否开机启动
systemctl is-enabled sshd
1
  • 关闭开机自启
systemctl disable network
1
  • 启用 network 开机自启。
systemctl enable network
1

# 4,systemd 日志管理。

systemd 提供了自己日志系统(logging system),称为 journal. 使用 systemd 日志,无需额外安装日志服务(syslog)。读取日志的命令:

  • 查看所有日志 (默认显示本次启动的所有日志)
 journalctl
1
  • 查看本次启动的所有日志也可以使用
journalctl -b
1
  • 查看内核日志
journalctl -k
1
  • 根据服务筛选
journalctl -u sshd
1
  • 根据进程 ID 查询
journalctl _PID=1
1
  • 查看日志占用的磁盘空间
journalctl --disk-usage
1
  • 设置日志占用的空间
journalctl --vacuum-size=500M
1
微信 支付宝
#centos#systemd
上次更新: 2024/07/04, 22:40:37
使用supervisor管理tomcat,nginx等进程详解
使用systemctl管理tomcat多实例

← 使用supervisor管理tomcat,nginx等进程详解 使用systemctl管理tomcat多实例→

最近更新
01
学习周刊-总第214期-2025年第23周
06-05
02
学习周刊-总第213期-2025年第22周
05-29
03
学习周刊-总第212期-2025年第21周
05-22
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式