systemd添加自定义系统服务设置自定义开机启动的方法

发布时间 - 2026-01-10 21:55:33    点击率:

1.服务权限

systemd有系统和用户区分;系统(/user/lib/systemd/system/)、用户(/etc/lib/systemd/user/).一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

2.创建服务文件

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target
 
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

[Unit]

Description : 服务的简单描述

Documentation : 服务文档

Before、After:定义启动顺序。Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx.service之后启动。

Requires:这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,这个单元也停止了。

Wants:推荐使用。这个单元启动了,它需要的单元也会被启动;它需要的单元被停止了,对本单元没有影响。

[Service]

Type=simple(默认值):systemd认为该服务将立即启动。服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。

Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。

Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。

Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。

Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。

Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和Type=simple 类似。

PIDFile:pid文件路径

ExecStart:指定启动单元的命令或者脚本,ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。Type=oneshot允许指定多个希望顺序执行的用户自定义命令。

ExecReload:指定单元停止时执行的命令或者脚本。

ExecStop:指定单元停止时执行的命令或者脚本。

PrivateTmp:True表示给服务分配独立的临时空间

Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。

RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,默认的值为假,这个选项只有在Type=oneshot时需要被配置。

[Install]

Alias:为单元提供一个空间分离的附加名字。

RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。

WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。

Also:指出和单元一起安装或者被协助的单元。

DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。

3.重载服务

systemctl enable nginx.service

就会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/nginx.service 文件的链接。

4.操作服务

#启动服务
$ sudo systemctl start nginx.service
 
#查看日志
$ sudo journalctl -f -u nginx.service
— Logs begin at 四 2015-06-25 17:32:20 CST. —
6月 25 10:28:24 Leco.lan systemd[1]: Starting nginx – high performance web server…
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
6月 25 10:28:24 Leco.lan nginx[7976]: nginx: configuration file /etc/nginx/nginx.conf test is successful
6月 25 10:28:24 Leco.lan systemd[1]: Started nginx – high performance web server.
 
#重启
$ sudo systemctl restart nginx.service
 
#重载
$ sudo systemctl reload nginx.service
 
#停止
$ sudo systemctl stop nginx.service

以上就是小编为大家带来的systemd添加自定义系统服务设置自定义开机启动的方法全部内容了,希望大家多多支持~


# systemd  # 开机启动  # 一文教你如何自定义systemd开机启动脚本  # Systemd 入门实战教程  # 使用systemd部署服务的过程解析  # Nginx服务器添加Systemd自定义服务过程解析  # 使用systemd部署r-nacos的操作方法  # 自定义  # 重启  # 这一  # 也会  # 会在  # 停止了  # 是在  # 放在  # 多个  # 出现在  # 启动了  # 推荐使用  # 适用于  # 提供一个  # 小编  # 上时  # 值为  # 大家多多  # 为该  # 新建一个 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  Laravel如何使用Gate和Policy进行授权?(权限控制)  如何快速搭建安全的FTP站点?  如何批量查询域名的建站时间记录?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  简单实现Android文件上传  Linux系统运维自动化项目教程_Ansible批量管理实战  Laravel怎么连接多个数据库_Laravel多数据库连接配置  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  Laravel如何生成API文档?(Swagger/OpenAPI教程)  北京网站制作公司哪家好一点,北京租房网站有哪些?  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  利用JavaScript实现拖拽改变元素大小  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  如何快速辨别茅台真假?关键步骤解析  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  js实现点击每个li节点,都弹出其文本值及修改  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  英语简历制作免费网站推荐,如何将简历翻译成英文?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  Swift中swift中的switch 语句  如何在阿里云购买域名并搭建网站?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  如何快速搭建支持数据库操作的智能建站平台?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  如何用PHP工具快速搭建高效网站?  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何快速配置高效服务器建站软件?  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  Bootstrap CSS布局之列表  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  北京专业网站制作设计师招聘,北京白云观官方网站?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel如何配置和使用缓存?(Redis代码示例)  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何用已有域名快速搭建网站?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  JS碰撞运动实现方法详解  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  JS经典正则表达式笔试题汇总