systemd 服务管理
systemd管理服务的目录:/usr/lib/systemd/system
[root@node-2 ~]# cat /usr/lib/systemd/system/nginx.service [Unit] Description=Nginx Web Server After=network.target [Service] Type=forking ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit Restart=always User=root LimitNOFILE=100000 [Install] WantedBy=multi-user.target
在Systemd服务配置中,Type=forking
是服务类型(Type)的一种,它主要适用于那些以守护进程(daemon)模式运行的服务。Systemd中的服务类型决定了服务进程的行为以及Systemd如何管理这些进程。除了 Type=forking
之外,还有其他几种服务类型,每种类型都适用于不同的场景。以下是Systemd服务配置中常见的几种类型:
- Type=forking:
- 适用于以守护进程模式运行的服务。
- 要求
ExecStart
启动的命令自身就是以daemon模式运行的,且该命令在启动时会创建一个子进程(即守护进程),然后父进程退出。 - Systemd会在父进程退出后认为服务启动成功。
- Type=simple:
- 是最常见的类型,也是省略Type指令时的默认类型。
- 适用于那些在shell下运行在前台的命令。
- Systemd在启动命令后即认为服务启动完成,不会等待任何子进程的创建或父进程的退出。
- Type=oneshot:
- 类似于
Type=simple
,但服务进程必须自己退出,systemd才会认为服务已经停止。 - 这通常用于那些执行一次性任务的服务。
- 类似于
- Type=dbus:
- 适用于那些通过D-Bus总线启动的服务。
- Systemd会等待D-Bus总线上的服务信号来确定服务是否已经启动成功。
- Type=notify:
- 要求服务进程在启动时向systemd发送一个信号,通知它已经准备好。
- 这允许服务在完全启动之前进行一些初始化操作,并向systemd报告其状态。
- Type=idle:
- 类似于
Type=simple
,但服务进程会在所有其他启动任务完成后才开始执行。 - 这通常用于那些不需要立即启动,但需要在系统空闲时执行的服务。
- 类似于
- Type=socket(虽然不直接属于服务类型,但与套接字激活相关):
- 适用于那些通过套接字激活的服务。
- 当有连接请求到达指定的套接字时,systemd会启动服务进程来处理这些请求。
每种服务类型都有其特定的用途和适用场景。在选择服务类型时,需要根据服务的实际需求和运行方式来决定。对于Nginx这样的守护进程,通常会使用 Type=forking
类型。
越学越感到自己的无知
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现