栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

总结:linux之Service

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

总结:linux之Service

一、什么是.service文件?

Linux中.service文件是某项服务对应的配置文件,可用于systemd管理和控制的服务的设置。

比如我们的firstrun.service文件:

.service 文件通常包含3个模块,即:

[Unit]:表示启动顺序和依赖关系;

[Service]:服务的启动行为以及如何启动、重启、停止等信息

[Install]:表示如何安装配置文件。

二、如何管理?

.service 文件配置的服务常用systemd管理。

然而,systemd有系统和用户区分;系统(/user/lib/systemd/system/)、用户(/etc/lib/systemd/user/)。

一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

我们的firstrun是放在/user/lib/systemd/system/下的。

三、内容介绍

[Unit]

作用:主要给出服务描述、启动顺序和依赖关系

Description:当前服务的简单描述。
Documentation:服务文档
After和Before:表示启动顺序,不涉及依赖关系。

  • Before=xxx.service表示本服务在xxx.service 启动之前启动
  • After=yyy.service表示本服务在yyy.service 之后启动。
  • 所以我们firstrun服务配置表示是在network.target之后启动。

Wants:表示该服务和某服务存在某种弱依赖关系,即某服务停止运行或退出不影响该服务继续运行。
Requires:表示”强依赖”关系,即某服务停止运行或退出,改服务也必须停止运行。
Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。

[Service]

作用:服务的启动行为以及如何启动、重启、停止等信息

ExecStart:指定启动服务的命令或者脚本。

  • [Service]
    ExecStart=/usr/lib/systemd/firstrun 
  • firstrun配置表示由/usr/lib/systemd/firstrun脚本启动服务。

ExecStop:指定单元停止时执行的命令或者脚本。

Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。

[Install]

作用:如何安装这个配置文件,即怎样做到开机自启
WantedBy字段:表示该服务所在的 Target。
Target的含义是服务组,表示一组服务。


WantedBy=multi-user.target指的是服务所在的Target是multi-user.target

Systemd 有默认的启动 Target就是multi-user.target,在这个组里的所有服务,都将开机启动。

四、配置开机启动

1、在“/etc/init.d”目录下添加自启动脚本(Service管理)。

  • service命令原理:是去/etc/init.d/目录下,去执行相关程序脚本
  • 其实目录 /etc/init.d 是符号链接文件,实际上是链接到目录 /etc/rc.d/init.d
  • service管理是一种传统方式,即在/etc/rc.d/init.d下写脚本是一种老的方式,当前比较新的方式是systemctl,即在如下目录写脚本:/etc/systemd/system/multi-user.target.wants。

2、在“/etc/rc.local”文件中添加自启动命令“/usr/./hello.sh”或“cd /opt && ./hello.sh”。

3、将脚本放入:/etc/systemd/system/multi-user.target.wants(systemctl管理)

我们进入/etc/systemd/system/multi-user.target.wants看下:看到了很多我们熟悉的服务,这些服务都是开机自动启动。

五、service和systemctl

Linux 服务管理两种方式service和systemctl。

systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。

systemd是Linux系统最新的初始化系统,对应的进程管理命令是systemctl。

systemctl命令兼容了service,即systemctl也会去/etc/init.d目录下,查看,执行相关程序。

systemctl实际上将 service 和 chkconfig 这两个命令组合到一起。

Systemd 默认从目录/etc/systemd/system/读取配置文件。但是,里面存放的大部分文件都是符号链接,指向目录/usr/lib/systemd/system/,真正的配置文件存放在/usr/lib/systemd/system/目录。

systemctl enable命令用于设置开机自启,原理其实就是在上面两个目录之间,建立符号链接关系。即会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/docker.service 文件的链接。

systemctl命令脚本存放在/usr/lib/systemd/目录下,也兼容了service, 即也会去/etc/init.d目录下查看执行相关程序,所以systemctl命令会查看两个目录。

systemctl两个主要目录:

/usr/lib/systemd/system/firstrun.service:service目录

/usr/lib/systemd/firstrun:一般放置真实的启动脚本

启动http服务:systemctl start httpd
设置开机自启:systemctl enable httpd

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号