网站首页 > 编程文章 正文
前言:
Centos7开机第一个程序从init完全换成了systemd的启动方式。而systemd是通过管理unit的方式来控制开机服务,开机级别等功能。
在/usr/lib/systemd/system目录下包含了各种unit文件,其中就包括了以service后缀的unit,systemd在开机要想执行自启动服务,必须通过.service后缀的unit来进行控制的。
两种服务:
One、系统服务:开机不用登陆就能运行的程序[开机自启]。
Two、用户服务:需要登陆以后才能运行的程序。
1、 配置文件简单介绍:
sshd.service为例
1、[Unit] 区块:启动顺序与依赖关系。
字段解释:
Description字段:给出当前服务的简单描述。
Documentation字段:给出文档位置。
After字段:如果network.target或sshd-keygen.service需要启动,那么sshd.service应该在它们之后启动。
Before字段:定义sshd.service应该在哪些服务之前启动。
注意:After和Before字段只涉及启动顺序,不涉及依赖关系。
2、[Service]区块:启动行为。
启动命令:
ExecStart字段:定义启动进程时执行的命令。
ExecReload字段:重启服务时执行的命令。
ExecStop字段:停止服务时执行的命令。
ExecStartPre字段:启动服务之前执行的命令。
ExecStartPost字段:启动服务之后执行的命令。
ExecStopPost字段:停止服务之后执行的命令。
注意两点:
One、所有的启动设置之前,可以加上一个连词号[-],表示"抑制错误",即发生错误的时候,不影响其他命令的执行。
如下:
EnvironmentFile=-/etc/sysconfig/sshd,表示即使/etc/sysconfig/sshd文件不存在,也不会抛出错误。
Two、[Service]中的启动、重启、停止命令全部要求使用绝对路径!
启动类型:
Type字段定义启动类型,值如下:
Simple[默认]:ExecStart字段启动的进程为主进程。
forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程[后台运行]。
oneshot:类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务。
dbus:类似于simple,但会等待D-Bus信号后启动。
notify:类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务。
idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。
PrivateTmp=True表示给服务分配独立的临时空间。
重启行为:
KillMode字段:定义 Systemd如何停止sshd服务。
control-group[默认值]:当前控制组里面的所有子进程,都会被杀掉。
process:只杀主进程。
mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号。
none:没有进程会被杀掉,只是执行服务的stop命令。
Restart字段:定义了sshd退出后,Systemd的重启方式
Restart字段的值:
no[默认值]:退出后不会重启。
on-success:只有正常退出时[退出状态码为0],才会重启。
on-failure:非正常退出时[退出状态码非0],包括被信号终止和超时,才会重启。
on-abnormal:只有被信号终止和超时,才会重启。
on-abort:只有在收到没有捕捉到的信号终止时,才会重启。
on-watchdog:超时退出,才会重启。
always:不管是什么退出原因,总是重启。
RestartSec字段:表示 Systemd 重启服务之前,需要等待的秒数。
注意:
对于守护进程,推荐设为on-failure。
对于那些允许发生错误退出的服务,可以设为on-abnormal。
3、[Install] 区块:定义如何安装这个配置文件,即怎样做到开机启动。
WantedBy字段:表示该服务所在的Target。
Target的含义是服务组,表示一组服务。
WantedBy=multi-user.target指的是:sshd所在的Target是multi-user.target。
注意:
这个设置非常重要,因为执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中。
Systemd有默认的启动 Target。
2、 测试
以tomcat为例
sudo vim /usr/lib/systemd/system/tomcat.service
写入如下:
[Unit]
Description=my tomcat service
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
Environment="JAVA_HOME=/root/General/jdk1.8.0_181"
PIDFile=/home/odysee/General/tomcat8.5/tomcat.pid
ExecStart=/home/odysee/General/tomcat8.5/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
创建上面服务需要的pid
vim /home/odysee/General/tomcat8.5/bin/catalina.sh
加入如下:
CATALINA_PID="$CATALINA_BASE/tomcat.pid"
3、 设置为开机启动/禁止
sudo systemctl enable/disable tomcat.service
启动tomcat
sudo systemctl start tomcat.service
查看状态
systemctl status tomcat.service
停止tomcat
sudo systemctl stop tomcat.service
4、重启OS
init 6
浏览器访问
测试完成
欢迎大家给予宝贵的意见或者建议。
欢迎大家补充或者共享一些其他的方法。
感谢支持。
猜你喜欢
- 2024-09-09 0728-6.3.0-如何在Redhat7.4安装CDH6.3
- 2024-09-09 完整的房间类游戏解决方案AiJ(布置房间类游戏)
- 2024-09-09 OGG同步到Kafka(ogg 同步ddl)
- 2024-09-09 一文探讨堆外内存的监控与回收(内存监控器)
- 2024-09-09 Java环境变量配置(java环境变量配置path路径)
- 2024-09-09 实时数据湖基础环境构建之kafka环境搭建
- 2024-09-09 面试官太难伺候?一个try-catch问出这么多花样
- 2024-09-09 小师妹学JVM之:JIT中的PrintAssembly续集
- 2024-09-09 EFK集群部署(elk集群方案)
- 2024-09-09 java 第一天——java 环境变量(java环境变量怎么用)
你 发表评论:
欢迎- 最近发表
-
- 数据不丢失 从Windows 11的DEV版降级到正式版
- Win11学院:在Windows11 25905预览版中如何启用Dev Drive
- DEVC++的卸载(devcon卸载驱动)
- win11 dev 开发版 升级攻略完整版
- 最新Windows11+Windows10系统各种版本永久激活密钥以及下载链接
- 想学Python,却还记不住语法?神仙书籍 python背记手册双手奉上
- 如何用Python语言开发大型服务器程序
- 30天Python 入门到精通(python零基础入门到精通)
- 入门扫盲:9本自学Python PDF书籍,让你避免踩坑,轻松变大神!
- 学好Python需要看的4本书推荐(学python好用的书)
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)