linux服务器 系统服务文件 service

在 Ubuntu 系统中,服务的管理主要依赖于 systemd,它是现代 Linux 系统的默认初始化系统和服务管理器。服务的配置文件通常以 .service 为后缀,存放在特定的目录中,具体目录和用途如下:

系统服务目录

  1. /etc/systemd/system/ 这是用户自定义服务的主要存放目录。任何在此目录下的服务文件都会优先于系统默认的服务文件。建议将自定义服务文件放在此目录中以便管理和持久化。

  2. /lib/systemd/system/ 系统默认的服务文件存放目录。大部分系统服务的 .service 文件都位于此处。一般不建议直接修改此目录下的文件。

  3. /usr/lib/systemd/system/ 某些发行版可能会将系统服务文件存放在此目录中,主要用于系统级服务的定义。

  4. /run/systemd/system/ 临时服务文件目录,通常由系统动态生成,服务重启后可能会被清空。

用户服务目录

  1. ~/.config/systemd/user/ 用户级服务文件存放目录,适用于当前用户的服务管理。

  2. /usr/lib/systemd/user/ 系统范围内的用户服务文件目录,适用于所有用户的服务。



1 文件的基本结构
[Unit]:服务的全局信息和依赖性声明,如服务名称、描述等。
[Service]:指定服务的具体配置,如服务执行的命令、工作目录等。
[Install]:指定服务的安装方式,如服务的启动级别等。

2 [Unit]字段的配置
Description:对服务的简短描述。
Before:定义服务在其他服务之前启动。
After:定义服务在其他服务之后启动。
Requires:定义服务启动需要哪些其他服务已启动,否则无法启动。
PartOf:定义该服务是其他服务的一部分,如果其他服务停止,该服务也会停止。
Wants:定义服务启动时可同时启动哪些其他服务。
Condition...:定义服务启动的条件,如ConditionPathExists表示某个路径存在时才启动该服务。
3  [Service]字段的配置
Type:服务类型,可以是simple、forking、ondemand、notify等。
Exec*:各种与执行相关的命令。
ExecStart:定义启动服务时执行的命令。
ExecStop:定义停止服务时执行的命令。
ExecStartPre:定义启动服务前执行的命令。
ExecStartPost:定义启动服务后执行的命令。
ExecStopPost:定义停止服务后执行的命令。
ExecReload:定义重启服务时执行的命令。
User:定义服务运行的用户。
Group:定义服务运行的用户组。
PrivateTmp:将服务的/tmp目录挂载到私有的命名空间中,以增强安全性。
Restart:定义服务异常退出时如何重启。
WorkingDirectory:定义服务工作目录。
Environment:定义服务的环境变量等。
ProtectSystem:防止服务对系统文件进行修改。
NoNewPrivileges:防止服务通过setuid或setgid等提升权限。

4 [Install]字段的配置
WantedBy:定义在哪些系统运行级别下启用此服务。
RequiredBy:启动其他系统服务时必需启动此服务。

示例:
[Unit]
Description=ruoyi-backend-service
After=syslog.target network.target

[Service]
Type=simple
#ExecStart=/home/JarRun/nansha/start.sh
ExecStart=/usr/bin/nohup /usr/local/btjdk/jdk8/bin/java -Xms1024m -Xmx1024m -Xmn256m -XX:MaxDirectMemorySize=5G -jar  /home/JarRun/nansha/xxx_SOAP_NANSHA-0.0.1-SNAPSHOT.jar  > /home/JarRun/nansha/PUSHAPI.log 2>&1 & echo $! > /home/JarRun/nansha/PUSHAPI.txt
#ExecStop=/home/JarRun/nansha/stop.sh
Restart=always
RestartSec=300
StartLimitBurst=3
User=root
Group=root
#配置工作目录,默认是~。服务产生得文件、日志信息会存入到工作目录
WorkingDirectory=/home/JarRun/nansha

[Install]
WantedBy=multi-user.target

 



posted @ 2025-09-10 13:17  wangssd  阅读(66)  评论(0)    收藏  举报