systemd:
Systemd 是系统启动和服务器守护进程管理器,负责在系统启动或运行时,激活系统资源,服务器进程和其它进程。
特性:
系统引导时实现服务并行启动,实现快速开机。
按需启动守护进程。
能自动保存系统状态快照。
基于依赖关系定义服务控制逻辑(自动化的服务依赖关系管理)。
同时采用 socket 式与 D-Bus 总线式激活服务。
unit:
表示不同类型的 systemd 对象,unit 由其相关的配置文件进行标识,识别和配置。
相关文件中主要包含了系统服务,监听的 socket,保存的快照以及其他与 init 相关的信息。
这些配置文件主要保存在
/usr/lib/systemd/system 每个服务最主要的启动脚本设置,类似于之前的 /etc/init.d/。
/run/systemd/system 系统执行过程中所产生的服务脚本,比上面目录优先运行。
/etc/systemd/system 管理员建立的执行脚本,类似于 /etc/rc.d/rcN.d/Sxx 类的功能,比上面目录优先运行。
这三个目录的配置文件优先级从低到高,如果同一选项三个地方都配置了,优先级高的会覆盖优先级低的。
系统安装时,默认会将 unit 文件放在 /usr/lib/systemd/system 目录。
修改系统默认的配置:
如果我们想要修改系统默认的配置,比如 sshd.service,一般有两种方法
1. 在 /etc/systemd/system 目录下创建 sshd.service 文件,里面写上我们自己的配置。
2. 在 /etc/systemd/system 下面创建 sshd.service 目录,在目录里新建任何以 .conf 结尾的文件,然后写入自己的配置。推荐这种做法。
xx.service:
每一个服务以 .service 结尾,一般会分为3部分:[Unit]、[Service] 和 [Install]。
[Unit]
Description:服务的简单描述;
Documentation:服务文档;
After:依赖,仅当依赖的服务启动之后再启动自定义的服务单元;
[Service]
Type:启动类型 simple、forking、oneshot、notify、dbus;
Type = simple(默认值):systemd 认为该服务将立即启动,服务进程不会 fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是 socket 激活型;
Type = forking: systemd 认为当该服务进程 fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求, 使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便 systemd 能够跟踪服务的主进程。
Type = oneshot: 这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit = yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
Type = notify: 与 Type = simple 相同,但约定服务会在就绪后向 systemd 发送一个信号,这一通知的实现由 libsystemd-daemon.so 提供。
Type = dbus: 若以此方式启动,当指定的 BusName 出现在 DBus 系统总线上时,systemd 认为服务就绪。
PIDFile:pid 文件路径;
ExecStartPre:启动前要做什么,比如测试一下配置文件是否正常;
ExecStart: 启动;
ExecReload: 重载;
ExecStop: 停止;
PrivateTmp: True 表示给服务分配独立的临时空间;
Environment:指定环境变量,如果不指定,想让它默认区使用系统环境变量会出错。格式:Environment='key1=val1' 'key2=val2'
User: 指定用哪个用户
Group: 指定用哪个组
[Install]
WantedBy:
服务安装的用户模式,从字面上看,就是想要使用这个服务的是谁? multi-user.target,就是指想要使用这个服务的目录是多用户。
每一个 .target 实际上是链接到我们单位文件的集合,当我们执行 systemctl enable sshd.service 时,
就会在 /etc/systemd/system/multi-user.target.wants/ 目录下新建一个 /usr/lib/systemd/system/sshd.service 文件的符号链接。
脚本加入开机启动:
- 创建脚本 demo.sh
"
#! /bin/bash
service firewalld start
"
- cd /etc/systemd/system
- 创建 demo.service
"
[Unit]
Description=demo
After=network.target
[Service]
User=root
Group=root
Type=forking
ExecStart=/home/demo.sh
# ExecStop=/home/kill-demo.sh
# ExecReload=/bin/kill -s HUP $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
"
- 加入开机启动 systemctl enable demo
systemd启动脚本在哪
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
jenkins通过脚本启动java应用
本文简单简单介绍怎么通过jenkins来调用shell脚本启动java脚本。
html/xml shell