欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 文化 > 嵌入式:Linux系统应用程序(APP)启动参数及其规则详解

嵌入式:Linux系统应用程序(APP)启动参数及其规则详解

2025/4/26 18:29:11 来源:https://blog.csdn.net/huangcheng86/article/details/147520350  浏览:    关键词:嵌入式:Linux系统应用程序(APP)启动参数及其规则详解

在 systemd 的服务单元文件中,[Service] 部分用于定义服务的启动、停止、重启等操作,以及服务的运行环境和参数。以下是 [Service] 部分常见参数及其规则的详细介绍:

服务类型相关参数

  • **Type**
    • **作用**:指定服务的启动类型,不同的类型会影响 systemd 对服务启动状态的判断和管理方式。
    • 常见取值及规则
      • **simple**:默认值,适用于服务进程直接在前台运行的情况,systemd 会认为服务启动完成当主进程启动后。例如,一些简单的脚本程序。
      • **forking**:适用于服务会进行 fork 操作,创建子进程并让父进程退出的情况,如传统的守护进程。systemd 会等待服务创建子进程并退出父进程后,认为服务启动完成,通常需要配合 PIDFile 参数指定服务主进程的 PID 文件。
      • **oneshot**:适用于一次性执行的任务,服务执行完后会自动停止。常用于执行初始化脚本或系统配置任务。可以通过 RemainAfterExit=yes 让 systemd 认为服务在执行完后仍然处于活跃状态。
      • **dbus**:适用于通过 D-Bus 进行通信的服务。systemd 会等待服务在 D-Bus 上注册成功后,认为服务启动完成。
      • **notify**:适用于服务会主动向 systemd 发送通知消息的情况。服务启动后,会发送一个通知告知 systemd 自己已经启动完成。
      • **idle**:服务会在所有作业队列处理完毕后才启动。

启动和停止命令参数

  • **ExecStart**
    • **作用**:指定服务的启动命令,是服务启动时执行的主要命令。
    • **规则**:可以有多个 ExecStart 行,但通常只使用一个。命令可以是绝对路径或在系统 PATH 环境变量中的可执行文件,还可以包含命令行参数。例如:ExecStart=/usr/bin/nginx -g 'daemon on; master_process on;'
  • **ExecStartPre**
    • **作用**:指定在 ExecStart 命令执行之前需要执行的命令,常用于执行一些预检查或初始化操作。
    • **规则**:可以有多个 ExecStartPre 行,这些命令会按顺序依次执行,只有当所有 ExecStartPre 命令都成功执行后,才会执行 ExecStart 命令。
  • **ExecStartPost**
    • **作用**:指定在 ExecStart 命令执行之后需要执行的命令,常用于执行一些启动后的配置或检查操作。
    • **规则**:可以有多个 ExecStartPost 行,这些命令会在 ExecStart 命令成功执行后按顺序依次执行。
  • **ExecStop**
    • **作用**:指定服务停止时执行的命令。
    • **规则**:可以有多个 ExecStop 行,这些命令会在服务停止时按顺序依次执行。
  • **ExecReload**
    • **作用**:指定服务重新加载配置时执行的命令。
    • **规则**:通常用于支持配置文件热加载的服务,当执行 systemctl reload 命令时,会执行 ExecReload 命令。

服务重启和超时参数

  • **Restart**
    • **作用**:指定服务在什么情况下需要重启。
    • 常见取值及规则
      • **no**:默认值,服务停止后不会自动重启。
      • **on-success**:服务正常退出(退出状态码为 0)时不会重启,异常退出时会重启。
      • **on-failure**:服务异常退出(退出状态码不为 0)时会重启,如被信号终止、超时等情况。
      • **always**:无论服务是正常退出还是异常退出,都会重启。
      • **on-abnormal**:服务因异常信号(如 SIGSEGV)或超时等异常情况退出时会重启。
  • **RestartSec**
    • **作用**:指定服务重启前的等待时间,单位可以是秒(s)、毫秒(ms)等。
    • **规则**:例如 RestartSec=5s 表示服务停止后,会等待 5 秒再尝试重启。
  • **TimeoutStartSec**
    • **作用**:指定服务启动的超时时间,如果服务在规定时间内没有启动完成,systemd 会认为启动失败。
    • **规则**:例如 TimeoutStartSec=30s 表示服务启动时间不能超过 30 秒。
  • **TimeoutStopSec**
    • **作用**:指定服务停止的超时时间,如果服务在规定时间内没有停止,systemd 会采取强制终止措施。
    • **规则**:例如 TimeoutStopSec=10s 表示服务停止时间不能超过 10 秒。

进程管理和资源限制参数

  • **PIDFile**
    • **作用**:指定服务主进程的 PID 文件路径,常用于 Type=forking 的服务,systemd 可以通过该文件获取服务主进程的 PID,以便进行管理。
    • **规则**:例如 PIDFile=/run/nginx.pid
  • **KillMode**
    • **作用**:指定服务停止时的进程终止方式。
    • 常见取值及规则
      • **control-group**:默认值,会终止服务所在控制组中的所有进程。
      • **process**:只终止服务的主进程。
      • **mixed**:先终止服务的主进程,然后终止服务所在控制组中的所有剩余进程。
      • **none**:不终止任何进程,由服务自己负责清理。
  • **LimitCPU、LimitMEMLOCK 等**
    • **作用**:用于设置服务的资源限制,如 CPU 时间、内存锁定等。
    • **规则**:可以使用 Limit 前缀加上具体的资源名称来设置限制,例如 LimitCPU=200000 表示限制服务的 CPU 时间为 200000 微秒。

环境变量和工作目录参数

  • **Environment**
    • **作用**:指定服务运行时的环境变量。
    • **规则**:可以有多个 Environment 行,每行定义一个或多个环境变量,例如 Environment="VAR1=value1" "VAR2=value2"
  • **WorkingDirectory**
    • **作用**:指定服务的工作目录,服务启动时会切换到该目录。
    • **规则**:例如 WorkingDirectory=/var/www/html
通过合理配置 [Service] 部分的参数,可以精确控制服务的启动、停止、重启等行为,以及服务的运行环境和资源使用。
说明:可以通过 systemctl list-dependencies 命令查看某个服务的依赖关系,从而了解其启动顺序。例如,systemctl list-dependencies nginx.service 会列出 nginx 服务所依赖的其他服务以及它们的启动顺序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词