自定义系统服务
简介
可以把一些python脚本,shell脚本,启动命令等交给systemd去操作
systemctl
是一个基于systemd的系统服务管理工具,它用于启动、停止、重启、启动级别控制、查看状态和管理系统单元。通过它,你可以管理systemd系统和服务管理器。
如果你想要自己编写一个系统服务,并通过systemctl进行管理,你需要创建一个服务单元文件,并将其放置在正确的目录中,以便systemd可以识别和管理它。
文件路径
再次路径下创建文件
/etc/systemd/system/
文件格式以及命名
命名:xxxxx.service,此文件名将会作为系统服务名称
格式如下(简单格式):
[Unit]
Description=My Python Script
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /path/to/your/script.py
[Install]
WantedBy=multi-user.target
参数说明
[Unit]:服务单元的配置节,其中可以包含以下参数:
Description:服务的描述信息。
Documentation:服务文档的URL。
Requires:服务所依赖的其他服务。
Wants:服务希望但不是必须依赖的其他服务。
After:服务启动的顺序。
Before:服务停止的顺序。
Conflicts:与该服务冲突的其他服务。
[Service]:服务的配置节,其中可以包含以下参数:
Type:服务的类型,包括simple、forking、oneshot、dbus、notify等。
ExecStart:服务的启动命令。
ExecStop:服务的停止命令。
ExecReload:服务的重启命令。
User:服务运行的用户。
Group:服务运行的用户组。
WorkingDirectory:服务的工作目录。
Environment:服务的环境变量。
Restart:服务出错后的重启策略。
RestartSec:重启之前等待的时间。
TimeoutStartSec:启动超时时间。
TimeoutStopSec:停止超时时间。
PIDFile:服务的进程ID文件。
UMask:服务的文件掩码。
LimitNOFILE:服务能够打开的文件数的限制。
LimitNPROC:服务能够创建的进程数的限制。
[Install]:安装服务的配置节,其中可以包含以下参数:
WantedBy:服务在哪些目标中启用。
RequiredBy:服务在哪些目标中必须启用。
配置重载
配置成功后需要执行重载,而且每次修改service文件后也需要重载才能生效,使用systemctl 执行时 可以联想出配置的任务了
sudo systemctl daemon-reload
基本命令
sudo systemctl start xxxx_test.service #启动服务
sudo systemctl stop xxxx_test.service #停止服务
sudo systemctl restart xxxx_test.service #重启服务
sudo systemctl status xxxx_test.service # 查看服务状态
sudo systemctl list-unit-files #查看服务单元
服务状态设置
开机自启
sudo systemctl enable my-static-service.service
取消自启(手动启动)
sudo systemctl disable my-static-service.service
删除服务
停止服务,设置disable,删除service文件,重载systemctl
注意
1.service文件要放在指定路径,新增文件或者修改文件需要重载
2.restart,stop不需要在service配置也可以,reload需要配置
3.当你只修改service文件里面的启动的文件,那么可以不重新加载,因为systemd就相当一个启动入口,只负责替你启动文件
4.静态服务目前未接触,后续遇到需要更新