• 对于注定会优秀的人来说,他所需要的,只是时间----博主
  • 手懒得,必受贫穷,手勤的,必得富足----《圣经》
  • 帮助别人,成就自己。愿君在本站能真正有所收获!
  • 如果你在本站中发现任何问题,欢迎留言指正!
  • 宝剑锋从磨砺出,梅花香自苦寒来!
  • 本站开启了防爆破关小黑屋机制,如果您是正常登录但被关进小黑屋,请联系站长解除!

CentOS7主机使用systemd管理应用

系统与优化 eryajf 1个月前 (02-18) 88℃ 未收录 0个评论
本文预计阅读时间 11 分钟

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

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

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

2,定义一个示例配置。

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

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

日常管理是这样式儿的:

/opt/doc-wiki/mindoc_linux_amd64 &

现在添加配置通过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

保存之后,先加载一下。

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

$ systemctl daemon-reload

然后启动一下验证下:

$ 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

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

[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.

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

3,整理systemctl命令。

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

4,systemd日志管理。

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

  • 查看所有日志(默认显示本次启动的所有日志)
 journalctl
  • 查看本次启动的所有日志也可以使用
journalctl -b
  • 查看内核日志
journalctl -k
  • 根据服务筛选
journalctl -u sshd
  • 根据进程ID查询
journalctl _PID=1
  • 查看日志占用的磁盘空间
journalctl --disk-usage
  • 设置日志占用的空间
journalctl --vacuum-size=500M

weinxin
扫码订阅,第一时间获得更新
微信扫码二维码,订阅我们网站的动态,另外不定时发送WordPress小技巧,你可以随时退订,欢迎订阅哦~

二丫讲梵 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明CentOS7主机使用systemd管理应用
喜欢 (0)
[如果想支持本站,可支付宝赞助]
分享 (0)
eryajf
关于作者:
学无止境,我愿意无止境学。书山有路,我愿意举身投火,淬炼成金!

您必须 登录 才能发表评论!