service文件理解

本文涉及的产品
云数据库 MongoDB,通用型 2核4GB
简介: service文件理解
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
User=mongod
Group=mongod
Environment="OPTIONS=-f /etc/mongod.conf"
EnvironmentFile=-/etc/sysconfig/mongod
ExecStart=/usr/bin/mongod $OPTIONS
ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb
ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb
ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb
PermissionsStartOnly=true
PIDFile=/var/run/mongodb/mongod.pid
Type=forking
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# locked memory
LimitMEMLOCK=infinity
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target

[Unit]:控制单元

Description:单元信息的描述

Documentation:相关的文档信息连接

Wants:本单元启动了,它“想要”的单元也会被启动。但是如果“想要”的单元启动不成功,对本单元没有影响。

Requires: 本单元启动了,那么它“需要”的单元也会被启动; 它“需要”的单元被停止了,它自己也不能正常使用。但是请注意,这个设定并不能控制本单元与它“需要”的单元的启动顺序,即 Systemd 不是先启动 Requires 再启动本单元,而是在本单元被激活时,并行启动两者。如果 Requires 先启动成功,那样本单元才会启动成功; 如果 Requires 启动得慢,那本单元就会失败。所以为了系统的健壮性,不建议使用Requires,而建议使用 Wants 。可以使用多个 Requires。

Conflicts:如果冲突单元启动了,那本单元就不能正常启动。

OnFailure:如果本单元失败了,那么启动其它的什么单元。

Before/After:要是一个单元 Before 另一个服务,那么在并行启动时(Systemd 总是用进程 0 并行启动所有东西,然后通过这两个标记来二次等待排序),那另一个服务这时就会等这个服务先启动并返回状态,注意是先启动而不是启动成功,因为失败也是一种状态,一定要成功才启动另一个服务是通过依赖关系定义的。反之 After 亦然。

定义服务本体 [service]


安装服务 [install]

这可能有点绕,我服务文件都弄好了,放到 /etc/systemd/system(供系统管理员和用户使用),/usr/lib/systemd/system(供发行版打包者使用)了,不就是安装好了嘛。

这里说的是一种内部状态,默认你放对位置它显示的是 disabled,unloaded,所以我们要在 Systemd 内部对它进行一下 load,没人要的东西是不需要安装的(我们不收渣渣),所以我们要告诉 Systemd 它是有人要的,被谁要。一般都是被

[Install]

WantedBy=multi-user.target


要(multi-user.target 表示多用户系统好了,简单理解就是你可以登入了)。这样在 multi-user.target 启用时,我们的服务也就会被启用了。

[Install] 部分下除了 WantedBy 还有两种属性,分别是:

  • Alias= 给你自己的别名,这样 systemctl command xxx.service 的时候就可以不输入完整的单元名称。比如你给 NetworkManager 一个别名叫 Alias=nm,那你就可以 systemctl status nm.service 查看实际是 NetworkManager.service 的服务了。
  • Also= 安装本服务的时候还要安装别的什么服务。比如我们的 He.net 脚本按理应该需要一个 iproute2.service 作为 also,但是 iproute2 实际上不需要 systemd 控制,所以就没写。它和 [Unit] 定义里面的依赖关系相比,它管理的不是运行时依赖,而是安装时。安装好了之后启动谁先谁后,谁依赖谁,和 Also= 都没有关系。


参考  https://blog.csdn.net/djskl/article/details/46671453,如有侵权,麻烦联系 joshualwork@163.com 删除。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
6月前
|
Kubernetes 负载均衡 算法
【K8S系列】深入解析Service
【K8S系列】深入解析Service
81 0
【K8S系列】深入解析Service
|
22天前
|
XML 数据库 Android开发
Service介绍
Service介绍
15 0
|
4月前
|
Kubernetes 负载均衡 容器
k8s(8)Service(服务)
Service(服务)
42 0
|
缓存 Kubernetes 负载均衡
k8s service 总结
k8s service 总结
248 0
k8s service 总结
|
API 调度
从Service到WorkManager
关于Service,想必大家都太熟悉了,今天我们就再回顾下它的使用、概念、区别、变更历史等等。
393 0
从Service到WorkManager
|
JSON Java 数据格式
如何生成自己的Yaas Service yaas
Sent: Tuesday, May 5, 2015 7:54 PM
99 0
如何生成自己的Yaas Service yaas
|
Kubernetes 负载均衡 网络协议
k8s service
Kubernetes Service 定义了这样一种抽象:一个 Pod 的逻辑分组,一种可以访问它们的策略——通常称为微服务。这一组 Pod 能够被 Service 访问到,通常是通过 Label Selector 实现的。
7046 0
理解Service
Service的start和bind有什么区别? Service分为两种工作状态,一种是启动状态,主要用于执行后台计算;另一种是绑定状态,主要用于其它组件和Service的交互。
961 0
|
监控 Unix 关系型数据库
|
监控 关系型数据库 Unix