设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
快捷导航
发布信息
搜索
搜索
首页
优惠促销
云服务器
独立服务器
站群服务器
母鸡服务器
服务器托管
全球云服务器
技术文档
联系
每日签到
本版
文章
帖子
用户
主机测评网
»
论坛
›
技术文档
›
其他教程
›
云服务器Centos添加自定义服务
返回列表
发新帖
云服务器Centos添加自定义服务
[复制链接]
|
主动推送
27
|
0
|
2024-9-11 15:03:18
|
显示全部楼层
|
阅读模式
Centos添加自定义服务
Linux系统中也有“服务”这一说法,通过服务我们可以便捷地管理一些程序功能,也可以作为程序开机自启的一个手段之一。今天我来分享一下如何创建自己简易的Linux服务。
新建服务文件
每一个服务在Linux有它自己的对应的配置文件,这个文件可以通过文本编辑器编辑,扩展名为xxx.servive(xxx为服务名称)。这些文件位于/usr/lib/systemd/system目录下。
在这个目录下新建service文件即可创建我们的服务。文件的内容结构如下:
[Unit]Description=服务描述After=服务依赖(再这些服务后启动本服务)[Service]Type=服务类型ExecStart=启动命令ExecStop=终止命令ExecReload=重启命令[Install]WantedBy=服务安装设置
可见服务配置文件分为[Unit]、[Service]和[Install]三大部分。
一般来说有些值是固定的,没有特殊需要我们直接套用即可。例如[Unit]中After的值一般是:network.target remote-fs.target nss-lookup.target。
[Install]的WantedBy一般是multi-user.target。
[Service]中是主要内容。
Type的值有以下几个:simple:这是默认的值,指定了ExecStart设置后,simple就是默认的Type设置除非指定Type。simple使用ExecStart创建的进程作为服务的主进程,在此设置下systemd会立即启动服务。forking:如果使用了这个值,则ExecStart的脚本启动后会调用fork()函数创建一个进程作为其启动的一部分。当初始化完成,父进程会退出。子进程会继续作为主进程执行。oneshot:类似simple,但是在systemd启动之前,进程就会退出。这是一次性的行为。可能还需要设置RemainAfterExit=yes,以便systemd认为j进程退出后仍然处于激活状态。dbus:也和simple很相似,该配置期待或设置一个name值,通过设置BusName=设置name即可。notify:同样地,与simple相似的配置。顾名思义,该设置会在守护进程启动的时候发送推送消息。
其实常用的就是simple和forking了。一般来说我们的程序是应用程序前台使用就用simple,后台/守护进程一般是forking。
然后就是启动/停止/重启命令,注意这个命令里面调用的程序必须全部使用绝对路径。
例如,我的服务器上的redis的Service配置:
[Unit]Description=Redis-ServerAfter=network.target remote-fs.target nss-lookup.target[Service]Type=forkingExecStart=/opt/Redis-6.2.1/redis-server /root/RedisData/redis-conf.confExecStop=kill -9 $(pidof redis-server)ExecReload=kill -9 $(pidof redis-server) && /opt/Redis-6.2.1/redis-server /root/RedisData/redis-conf.conf[Install]WantedBy=multi-user.target
因为redis一般作为后台程序运行所以Type填forking。kill -9 $(pidof redis-server)命令的意思是:先用pidof命令获取指定名称进程的pid再把这个结果传给kill命令终止对应进程。平时终止特定名称的进程时也可以这么写。
其实除此之外,service文件还有很多配置项,这里只写出了常用必要的,满足日常需求,其余可以自行搜索学习,这里不再过多赘述。
启动/停止/重启我们的服务
刚刚建立好了我们的服务配置,现在就可以使用了!在此之前需要先使用下列命令让系统重新读取所有服务文件:
systemctl daemon-reload
然后通过以下命令操控服务:
# 启动服务service 服务名 start# 终止服务service 服务名 stop# 重启服务service 服务名 restart
那么注意服务名就是我们刚刚创建的服务配置文件service文件的文件名(不包括扩展名),例如我的服务文件是redis-server.service,那么我的服务名是redis-server。
其实我们执行启动服务命令时,就会执行我们刚刚配置文件中ExecStart的值的命令,同样终止、重启会对应执行配置文件中ExecStop、ExecReload的值的命令。
启用/禁用开机自启
通过以下命令启用/禁用开机自启动:
# 启用开机自启systemctl enable 服务名# 禁用开机自启systemctl disable 服务名
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
掌舵的鱼1987
131
主题
0
回帖
10
积分
新手上路
新手上路, 积分 10, 距离下一级还需 40 积分
新手上路, 积分 10, 距离下一级还需 40 积分
积分
10
加好友
发消息
回复楼主
返回列表
网络技术教程
软件使用教程
Windows教程
Centos教程
Ubuntu教程
Linux其他教程
综合教程
其他教程
其他文档
服务器商家推荐
华夏互联
蓝速云
米图云
全球云
文章
1
苹果电脑MAC系统登录Windows远程桌面
2
Debian拓展硬盘工具。cloud-utils-growpart、xfsprogs
3
安卓Android手机怎么使用V2rayNG?
4
WINDOWS系统电脑怎么使用WINXRAY?
5
notepad++.8.5.7编辑器,代码编辑器
6
DirectX修复工具增强版_V4.3.0.40864版本DLL修复工具C++安装
7
Visual C++运行库合集包完整版VisualCppRedist_AIO_x86_x64
8
ChromeSetup谷歌浏览器一键安装