centos8之systemd管理服务开机自启动
一、Systemd简介
systemd即为system daemon,是linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替常用的System V与BSD风格init程序。与多数发行版使用的System V风格init相比,systemd采用了以下新技术:
- (1) 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;
- (2) 用Cgroups代替PID来追踪进程,因此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
二、配置步骤
centos8如果像设置服务开机自启动,可以参照centos7方式配置,不过建议使用systemd进行统一管理。此博文示例以配置java程序开机自启动为例进行介绍。
1、编写tomcat服务启停脚本
[root@centos8 tomcat8]# vim autojavaapp.sh
脚本内容如下
#!/bin/bash
#description: 这是tomcat8服务启动、停止、状态查看脚本APP_NAME="test.jar"usage() {echo "case: sh run.sh [start|stop|restart|status]"exit 1
}isExist(){pid=`pgrep -f ${APP_NAME}`#如果不存在返回1,存在返回0if [ -z "${pid}" ]; thenreturn 1elsereturn 0fi
}start(){isExistif [ $? -eq "0" ]; thenecho "${APP_NAME} is already running,pid = ${pid}."elsecd /opt/javaapp/nohup java -jar ${APP_NAME} > /dev/null 2>&1 &echo "${APP_NAME} start success"fi
}stop(){isExistif [ $? -eq "0" ]; thenkill -9 ${pid}elseecho "${APP_NAME} is not running"fi
}status(){isExistif [ $? -eq "0" ]; thenecho "${APP_NAME} is running. Pid is ${pid}"elseecho "${APP_NAME} is not running"fi
}restart(){stopstart
}case "$1" in
"start")start;;
"stop")stop;;
"status")status;;
"restart")restart;;
*)
usage
;;
esac
2、授予脚本可执行权限
[root@centos8 javaapp]# chmod u+x autojavaapp.sh
3、验证脚本启停服务是否正常
[root@centos8 javaapp]# sh autojavaapp.sh status
test.jar is not running
[root@centos8 javaapp]# sh autojavaapp.sh start
test.jar start success
[root@centos8 javaapp]# sh autojavaapp.sh status
test.jar is running. Pid is 18053
[root@centos8 javaapp]# sh autojavaapp.sh stop
4、进入systemd配置文件目录
[root@centos8 javaapp]# cd /usr/lib/systemd/system
5、创建javaapp.service服务
[root@centos8 system]# vim javaapp.service
[root@centos8 system]# pwd
/usr/lib/systemd/system
[root@centos8 system]# cat javaapp.service
[Unit]
Description=javaapp application for test auto start
Wants=network-online.target[Service]
User=root
Type=forking
ExecStart=/usr/bin/bash /opt/javaapp/autojavaapp.sh start
ExecStop=/usr/bin/bash /opt/javaapp/autojavaapp.sh stop
ExecReload=/usr/bin/bash /opt/javaapp/autojavaapp.sh restart[Install]
WantedBy=multi-user.target
6、重载systemd配置
[root@centos8 ~]# systemctl daemon-reload
7、配置javaapp服务开机自启动
[root@centos8 system]# systemctl enable javaapp
Created symlink /etc/systemd/system/multi-user.target.wants/javaapp.service → /usr/lib/systemd/system/javaapp.service.
8、启停服务测试
[root@centos8 system]# systemctl status javaapp
[root@centos8 system]# systemctl start javaapp
[root@centos8 system]# systemctl status javaapp
[root@centos8 system]# systemctl stop javaapp
9、重启验证
三、systemd配置文件说明
1、systemd配置文件夹:
systemd 配置文件存在于以下三个文件夹中:
- /etc/systemd/system 存放系统启动的默认级别及启动的unit的软连接,优先级最高。
- /run/systemd/system,系统执行过程中产生的服务脚本,优先级次之。
- /usr/lib/systemd/system 存放系统上所有的启动文件。优先级最低
2、unit分类
unit的定义文件可以根据其后缀名称识别其定义的类型,可以使用systemctl -t help 查看。
.servicre定义了系统服务的启动
.target 定义了系统启动的级别标签,systemd 没有运行级别的概念,创建标签只是为了兼容老版本。
.socket 定义了进程通信用到的套接字,套接字与进程是分离的
.device 定义了系统启动时内核识别的文件,systemd提供了设备的管理功能,/dev 下的设备由/etc/udev/下的配置文件与.device共同定制
.mount 定义了系统的文件系统的挂载点
.snapshop 系统快照
.swap 用于标识swap设备
.automount 文件系统的自动挂载点
.path用于定义文件系统中的一个文件或目录使用。常用于文件系统发生变化时,延迟激活服务。
3、service文件组成:
1、service文件三部分
[Unit]
...
[service]
...
[install]
2)、Unit单元
[Unit] :不属于第二个标签的定义都放在这里,或存放不属于unit类型的定义,描述信息,依赖的unit
- Description:描述信息
- After:表明需要依赖的服务,作用决定启动顺序
- Before:表明被依赖的服务
- Requles:依赖到的其他unit ,强依赖,即依赖的unit启动失败。该unit不启动。
- Wants:依赖到的其他unit,弱依赖,即依赖的unit 启动失败。该unit继续启动
- Conflicts:定义冲突关系
3)、service单元
[Service]:
- Type:启动时关系的定义,
- simple:exec启动的进程就是主进程。
- forking :exec 启动的进程生成的其中一个子进程成为主进程,启动完成后,旧的主进程会退出。
- ontshot:启动下一个进程前主进程退出。
- dbus:
- notify:
- ldle:
- PIDFile=/var/run/sshd.pid
- EnvironmentFile 需要使用到的变量的定义文件
- ExecStart= 启动 unit需要执行的命令
- ExecStartpre:
- ExecStartpost:
- ExecStop=停止unit需要执行的命令
- Restart:
- ExecReload=/bin/kill -HUP $MAINPID
- KillMode=process
- Restart=on-failure
- RestartSec=42s
4)、install单元
[install]:服务启动或禁用时的一些选项
- Alias:
- RequlredBy: 被那些unit所依赖,
- WanteBy:被那些unit所依赖
4、配置重载
修改了的unit文件需要重载,使用如下命令
#systemctl daemon-reload
centos8之systemd管理服务开机自启动相关推荐
- systemd下supervisord服务开机自启动以及注意事项
systemd 下supervisord服务开机自启动 centos7 开机自启动脚本: #vim /lib/systemd/system/supervisord.service# superviso ...
- iptables规则备份和恢复,任务计划chkconfig工具systemd管理服务
2019独角兽企业重金招聘Python工程师标准>>> iptables规则备份和恢复 备份 iptables-save > /tmp/ipt.txt service ipta ...
- cron计划任务、chkconfig工具、systemd管理服务、unit、target介绍
1. linux任务计划cron linux的大部分系统管理工作都是通过定期自动执行某个脚本来完成的,那么如何定期执行某个脚本呢?这就要借助linux的cron功能了,这部分的内容很重要,请牢记! 命 ...
- Window服务器指定某软件/服务开机自启动
在我们工作学习的过程中,难免会遇到使用Windows作为服务器,服务器中的某些软件或者服务必须时刻都在运行着,但是假如断电后,或者重启服务器,我们又得手动去开启某些软件以获取特定服务!这就给我们的工作 ...
- gogs 服务开机自启动
gogs 服务开机自启动用到的命令 systemctl enable gogs.service systemctl start gogs.service 把/usr/local/src/gogs/ ...
- linux设置开机自启服务,linux设置服务开机自启动的三种方式
linux设置服务开机自启动的三种方式 这里介绍一下linux开机自动启动的几种方法,共计3种,大家可以借鉴一下!经验里面以centos 5.3系统为例! 方法1:.利用ntsysv命令进行设置,利用 ...
- windows10下配置nginx服务开机自启动
windows10下配置nginx服务开机自启动 网站有很多教程,这里赘述一下,补充一点细节 1.下载"Windows Service Wrapper"工具 下载地址:https: ...
- 任务计划、chkconfig工具、systemd管理服务、unit、target
比如备份数据或者重启服务. crontab -u.-e.-l.-r(删除) 格式:分 时 日 月 周 user command 文件/var/spool/cron/username 分范围0-59,时 ...
- systemctl手动配置mysql服务开机自启动
一.背景: 系统:centos7 检查mysql8.0已安装,确保服务已启动,端口3307 [root@localhost ~]# ps -ef |grep mysql root 668 1 0 06 ...
最新文章
- 揭秘物联网之城无锡鸿山的科技密码
- 什么是滚动灯箱的全数字滚动系统?
- mysql innodb 锁_MySQL/InnoDB锁机制
- IPv6下CDN和网络的最佳实践
- 【OpenCV 例程200篇】35. 图像的投影变换(边界填充)
- 综述 | 自动驾驶中的计算机视觉
- 开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~
- 计算机网络中netbuie,材料内部空隙体积占其总体积的百分率叫做()。A、孔隙率B、填充率C、空隙率D、密实度...
- 百度换肤怎么实现的html,JavaScript 实现百度换肤功能
- 日志管理系统rsyslogd
- MYSQL安装+Mysql-front 注册码
- 点对点广域网技术介绍
- docker---docker save
- 微信公众号的号内搜索关键词怎么设置 号内搜索关键词删除和排序方法
- word括号显示问题
- Axure-中继器的使用
- 使用BoundsChecker查找内存泄露
- Confluent上市与Cloudera私有化背后:从硅谷大数据公司的势力更替看数据分析的未来...
- 【Linux操作系统】基础概念和常用指令(一)
- 范文:项目开发总结报告