Linux系统编写Systemd Service实践
发布时间 - 2025-07-18 00:00:00 点击率:次systemd 服务是一种以 .service 结尾的单元文件,用于管理由systemd 监控或控制的进程。简而言之,它用于后台以守护进程(daemon)的形式运行程序。systemd 广泛应用于新版本的rhel、suse linux enterprise、centos、fed
ora和opensuse中,作为旧有的服务管理器service的替代品。
Systemd 服务的配置文件主要分为三个部分:控制单元(unit)的定义、服务(service)的定义以及安装部分。服务文件通常存放在/etc/systemd/system目录下(系统自带的服务文件位于/usr/lib/systemd/system),以 .service 结尾。本文将以创建nginx服务为例进行说明,假设您已经自行编译安装了nginx,接下来我们将创建一个nginx服务。
首先,创建一个名为nginx.service的文件,路径为/etc/systemd/system/nginx.service:
# 创建一个nginx.service文件vi /etc/systemd/system/nginx.service
文件内容如下:
[Unit] Description=Nginx - high performance web server After=network.target[Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install] WantedBy=multi-user.target
创建服务文件后,使用以下命令重新加载Systemd以识别新服务:
# 重新加载Systemd以识别新服务 systemctl daemon-reload
然后,您可以使用以下命令来管理nginx服务:
# 启动nginx systemctl start nginx重载nginx
systemctl reload nginx
停止nginx
systemctl stop nginx
重启nginx
systemctl restart nginx
启用nginx开机自启动
systemctl enable nginx
禁用nginx开机自启动
systemctl disable nginx
接下来,我们详细解释一下nginx.service文件中的各个部分。
控制单元 [Unit]
[Unit] Description=Nginx - high performance web server After=network.target
-
Description:描述整个单元,可以根据需要任意填写。 -
Before/After:指定启动顺序。network.target表示有网络可用,network-online.target表示已连接的网络。
服务本体 [Service]
[Service] Type=forking ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s stop
-
Type:服务的类型,常见类型如下:-
simple:默认类型,最简单的服务类型。主程序启动后,程序退出则服务结束。 -
forking:标准Unix Daemon的启动方式。启动程序后会调用fork()函数,设置好必要的通信频道后,父进程退出,留下守护进程的子进程。 -
oneshot:适用于一次性执行的任务或命令,运行完成后便无痕迹。通常需要设置RemainAfterExit=yes,表示即使没有进程存在,Systemd也认为服务启动成功。支持多条命令,用;分隔,换行用\。 -
dbus:程序启动时需要获取一块DBus空间,必须与BusName=一起使用,只有成功获得DBus空间后,依赖它的程序才会被启动。
-
ExecStart:在输入命令为start时执行的命令,必须使用绝对路径,例如/sbin/arp而不是简单的arp。ExecStop:在输入命令为stop时执行的命令,同样要求使用绝对路径。ExecReload:非必需,如果不设置则服务不支持restart命令。ExecStart和ExecStop是必需的。
此外,服务本体中还有其他常用参数:
-
User:指定运行服务的用户。 -
Group:指定运行服务的用户组。 -
WorkingDirectory:指定进程的工作目录,在执行前会切换到这个目录。
安装服务 [Install]
[Install] WantedBy=multi-user.target
-
WantedBy:设置服务被哪个目标装载,通常设置为multi-user.target。
总结来说,Systemd Service 是一种比/etc/init.d/下的脚本更好的服务管理方式,它可以灵活控制服务的启动时间,并且通常不会导致系统无法启动进入紧急模式。如果您想设置一些开机启动的服务,可以尝试编写Systemd Service。当然,前提是您使用的Linux发行版支持Systemd。
# nginx
# linux
# centos
# ai
# unix
# 创建一个
# 是一种
# 加载
# 放在
# 才会
# 主程序
# 适用于
# 您可以
# 服务管理
# 它可以
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
网站制作报价单模板图片,小松挖机官方网站报价?
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
如何在阿里云虚拟主机上快速搭建个人网站?
Linux系统命令中tree命令详解
如何快速查询网站的真实建站时间?
如何解决hover在ie6中的兼容性问题
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel Eloquent访问器与修改器是什么_Laravel Accessors & Mutators数据处理技巧
详解jQuery停止动画——stop()方法的使用
如何快速登录WAP自助建站平台?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
如何快速搭建FTP站点实现文件共享?
利用vue写todolist单页应用
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何快速生成凡客建站的专业级图册?
Laravel如何集成第三方登录_Laravel Socialite实现微信QQ微博登录
如何在服务器上三步完成建站并提升流量?
python中快速进行多个字符替换的方法小结
edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】
如何在云虚拟主机上快速搭建个人网站?
油猴 教程,油猴搜脚本为什么会网页无法显示?
如何正确选择百度移动适配建站域名?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
如何在Ubuntu系统下快速搭建WordPress个人网站?
利用python获取某年中每个月的第一天和最后一天
微信小程序 input输入框控件详解及实例(多种示例)
Laravel如何处理CORS跨域请求?(配置示例)
历史网站制作软件,华为如何找回被删除的网站?
如何在服务器上配置二级域名建站?
Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】
Python3.6正式版新特性预览
香港服务器网站推广:SEO优化与外贸独立站搭建策略
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
如何快速选择适合个人网站的云服务器配置?
详解MySQL数据库的安装与密码配置
使用C语言编写圣诞表白程序
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
如何用VPS主机快速搭建个人网站?
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
Laravel如何实现一对一模型关联?(Eloquent示例)
详解jQuery中基本的动画方法
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
高防服务器租用如何选择配置与防御等级?

