Linux service之自定义服务
前言
服务是应用程序存在的一种形式,静态的程序(即代码)运行成为进程运行于后台,从而执行规定的业务逻辑,对于后端程序而言通常是监听端口以处理来自客户端的请求。但这并非是一个服务,而只是一个运行于后台的守护进程罢了。服务是对这个进程进行管理,通过服务配置文件中设定好的一些命令和配置参数,可以对进程的生命周期进行管理和监控。
使用
服务配置文件(即.service文件)书写格式:
[Unit]
#服务的描述信息
Description=xxx daemon
#本服务依赖的服务,启动本服务前会检查并启动依赖的服务,且只有依赖的服务全都成功启动,本服务才能启动
Requires=aaa.service bbb.service
#同Requires,本服务需要在指定的服务都启动之后才能启动
After=111.service 222.service
#本服务需要在指定的服务启动之前启动
Before=AAA.service BBB.service[Service]
#服务的启动类型,idle是后台方式启动
Type=idle
#服务启动命令和停止命令的超时时间,即服务启动命令和停止命令超时时间都为10s,若不设置超时时间或设置为0,则表示没有限定超时时间,下同
#TimeoutSec=10s
#服务启动命令的超时时间
TimeoutStartSec=10s
#启动命令的前置命令
ExecStartPre=/bin/echo "starting service"
#服务管理的应用程序的启动命令
ExecStart=/usr/local/bin/dophin
#启动命令的后置命令
ExecStartPost=/bin/echo "start done"
#服务停止命令的超时时间
TimeoutStopSec=10s
#服务管理的应用程序的停止命令($MAINPID是服务管理的应用程序的进程ID,下同)
ExecStop=/bin/kill -9 $MAINPID
#停止命令的后置命令
ExecStopPost=/bin/echo "stop done"
#服务重启命令
ExecReload=/bin/kill -1 $MAINPID
#服务重启方式,no表示不重启,always表示总是尝试重启(只有在服务意外挂掉的时候会重启)
Restart=always
#服务重启前的等待时间
RestartSec=1s
#停止服务杀死进程的方式,process表示只杀死主进程,即服务管理的应用程序
KillMode=process[Install]
#设置只有系统是多用户的运行方式下才能启动本服务
WantedBy=multi-user.target
上面就是编写.service配置文件常见的一些配置参数,并非所有的都需要,根据需要进行设定即可。
编写完.service之后需要将该配置文件放到/etc/systemd/system目录下,然后将服务设置为开机启动。
#假设服务配置文件命令dophin.service
#将服务设置为开机启动
systemctl enable dophin.service
#关闭服务开机启动
systemctl disable dophin.service
#查看服务的状态
systemctl status dophin.service
#启动服务,对应dophin.service中的ExecStart
systemctl start dophin.service
#重启服务,对应dophin.service中的ExecReload
systemctl restart dophin.service
#停止服务,对应dophin.service中的ExecStop
systemctl stop dophin.service
#后台进程重新加载配置(相当于重启)
systemctl daemon-reload
启动服务,查看服务状态,然后尝试使用服务管理的应用程序,如果是后端程序的话直接发请求看看能不能成功处理并返回。
#查看运行日志(记录了服务的运行日志,可以用于服务启动失败时的错误定位)
journalctl -xe
FAQ
Q:同一个应用程序被不同的服务进行管理?(即不同服务的启动命令操作的是同一个应用程序)
A:报错如下:
解决方案:修改.service让应用程序只被一个服务管理即可。
Linux service之自定义服务相关推荐
- factory service provide自定义服务
1.factory factory , 就是你提供一个方法, 该方法返回一个对象的实例, 对于 AngularJS 的 factory 来说, 就是先定义一个对象, 给这个对象添加属性和方法, 然后返 ...
- 在linux下创建自定义service服务
三个部分 这个脚本分为3个部分:[Unit] [Service] [Install]. Unit Unit表明该服务的描述,类型描述.我们称之为一个单元.比较典型的情况是单元A要求在单元B启动之后再启 ...
- linux之systemctl设置自定义服务
1 问题 在linux系统上设置自定义服务,或者让我的服务开机就运行起来,比如我们就以tomcat服务为例子 /usr/local/tomcat/bin/startup.sh 启动tomcat的脚本 ...
- linux远程日志rsyslog服务端和客户端安装(亲测)--自定义接收日志格式
linux远程日志rsyslog服务端和客户端安装 用rsyslog的缘由: 1.防止系统崩溃无法获取系统日志分享崩溃原因,用rsyslog可以把日志传输到远程的日志服务器上 2.使用rsyslo ...
- Android11(RK3568)自定义服务制作(2)-Service制作
上一篇介绍了如何在android中制作kernel驱动,并在驱动中留下了dev和sys两种接口供应用程序调用. Android11(RK3568)自定义服务制作(1)-Kernel驱动 一,驱动测试 ...
- Service 服务详解 及自定义服务模板
文章目录 1.服务简介 2.服务的生命周期 1) Service 的 启动 停止 2).服务的生命周期的方法 3.使用startService 启动后服务的生命周期 1).文件结构 2) activi ...
- linux 下的 service 和systemctl 服务管理方式
linux 下的 service 和systemctl 服务管理方式 man service 得到:执行一个system V 风格的启动脚本 service - run a System V ini ...
- linux命令:FTP服务
FTP:file transfer protocol 文件传输协议 端口:21/tcp 文件共享服务: NFS:network file system (RPC: Remote procedure c ...
- linux服务器开机管理,Linux服务器开机自动启动服务或脚本的方法
由于种种原因我们需要重启服务器或断电重启,服务都得手动一个一个启动太过麻烦,所以专门了解开机自启脚本的设置方法. 方式一: 直接在脚本/etc/rc.d/rc.local(和/etc/rc.local ...
最新文章
- 非二叉树 UVA297 四分树 Quadtrees
- WebSockets[翻译]
- vue学习笔记(WebStorm安装)
- 八、Flume的构架,安装和基本使用
- 飞鸽传书2012是否发布了?
- 信息学奥赛一本通 1924:【03NOIP普及组】栈 | 洛谷 P1044 [NOIP2003 普及组] 栈
- XML NameSpace
- spark报错: Yarn application has already ended! killed or unable to launch application master
- linux-2.6.
- ObjectDataSource自定义分页
- 天秀,Excel居然还可以制作二维码
- python爬取数据教程_python爬虫爬取网页数据并解析数据
- python/Matplotlib绘制复变函数图像
- 【论文笔记】Neural Machine Translation by Jointly Learning to Align and Translate
- 使用js+css样式实现淘宝详情页图片放大镜的效果
- GitHub个人Blog完全攻略
- 作业4: 用户体验分析——以 “师路南通网站” 为例
- Android 实现企业微信自动打卡任务同时支持钉钉急速打卡模式
- java 组织机构代码_JAVA实现社会统一信用代码较验
- 【已解决】error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’ typedef struct { long
热门文章
- android版本9是什么,安兔兔:81.9%的用户升级到了Android 9,你的手机是什么版本呢?...
- 《恐怖电脑》技术支持
- IOS开发之延时执行的几种方法
- 和平精英有了氪金系统,玩家再也不敢开挂了?网友:你到亚服看看
- uploaded php,uploaded.php
- matplotlib入门-直方图、饼图、散点图
- 口语8000句--(2)生病、受伤时
- 计算机辅助英语词汇教学,计算机与网络辅助大学英语词汇教学
- Java笔试/面试题
- Huffman 编码的实现(C语言)