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服务配置中常见的几种类型:

  1. Type=forking:
    • 适用于以守护进程模式运行的服务。
    • 要求 ExecStart 启动的命令自身就是以daemon模式运行的,且该命令在启动时会创建一个子进程(即守护进程),然后父进程退出。
    • Systemd会在父进程退出后认为服务启动成功。
  2. Type=simple:
    • 是最常见的类型,也是省略Type指令时的默认类型。
    • 适用于那些在shell下运行在前台的命令。
    • Systemd在启动命令后即认为服务启动完成,不会等待任何子进程的创建或父进程的退出。
  3. Type=oneshot:
    • 类似于 Type=simple,但服务进程必须自己退出,systemd才会认为服务已经停止。
    • 这通常用于那些执行一次性任务的服务。
  4. Type=dbus:
    • 适用于那些通过D-Bus总线启动的服务。
    • Systemd会等待D-Bus总线上的服务信号来确定服务是否已经启动成功。
  5. Type=notify:
    • 要求服务进程在启动时向systemd发送一个信号,通知它已经准备好。
    • 这允许服务在完全启动之前进行一些初始化操作,并向systemd报告其状态。
  6. Type=idle:
    • 类似于 Type=simple,但服务进程会在所有其他启动任务完成后才开始执行。
    • 这通常用于那些不需要立即启动,但需要在系统空闲时执行的服务。
  7. Type=socket(虽然不直接属于服务类型,但与套接字激活相关):
    • 适用于那些通过套接字激活的服务。
    • 当有连接请求到达指定的套接字时,systemd会启动服务进程来处理这些请求。

每种服务类型都有其特定的用途和适用场景。在选择服务类型时,需要根据服务的实际需求和运行方式来决定。对于Nginx这样的守护进程,通常会使用 Type=forking 类型。

 

posted @   不会跳舞的胖子  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示