linux服务之.service文件使用及说明

 更新时间:2025年07月04日 09:36:08   作者:爱吃芝麻汤圆  
这篇文章主要介绍了linux服务之.service文件使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

.service 文件是 Linux 系统中 systemd 服务管理器的配置文件,用于定义如何启动、管理和监控系统服务(如后台程序、守护进程等)。以下是它的核心作用和详细使用指南:

一、.service 文件的核心作用

1.定义服务行为

描述服务的启动命令、依赖关系、重启策略、运行环境等。

2.服务生命周期管理

通过 systemctl 命令启动、停止、重启服务,或设置开机自启。

3.统一管理标准

标准化服务的配置方式,简化运维操作。

二、.service 文件的核心结构

一个典型的 .service 文件分为三个部分(以 [Unit][Service][Install] 为块):

1.[Unit]块

定义服务的元信息和依赖关系。

[Unit]
Description=服务描述
After=依赖的目标或服务(如 network.target)
Requires=强依赖的其他服务
Wants=弱依赖的其他服务

2.[Service]块

定义服务运行的具体行为。

[Service]
Type=服务类型(simple, forking, oneshot 等)
ExecStart=启动命令
Restart=重启策略(no, on-failure, always)
User=运行服务的用户
Group=运行服务的用户组
Environment=环境变量(如 PATH=/usr/bin)
WorkingDirectory=工作目录

3.[Install]块

定义如何将服务安装到系统启动目标。

[Install]
WantedBy=multi-user.target  # 关联到多用户命令行模式

三、如何使用 .service 文件

场景示例:部署一个自定义服务(如chogori-agent)

假设你有一个程序 /opt/chogori/bin/chogori-agent,需要将其配置为系统服务。

1. 创建 .service 文件

/etc/systemd/system/ 目录下创建文件 chogori-agent.service

sudo nano /etc/systemd/system/chogori-agent.service

2. 编写服务配置

[Unit]
Description=Chogori Agent Service
After=network.target

[Service]
Type=simple
ExecStart=/opt/chogori/bin/chogori-agent \
  --config /opt/chogori/etc/agent.yaml \
  --log /var/log/chogori/agent.log
Restart=on-failure
User=chogori
Group=chogori
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"

[Install]
WantedBy=multi-user.target

3. 设置权限和路径

确保程序和配置文件可访问:

sudo mkdir -p /var/log/chogori
sudo chown -R chogori:chogori /opt/chogori /var/log/chogori

4. 重载 systemd 配置

sudo systemctl daemon-reload

5. 操作服务

启动服务

sudo systemctl start chogori-agent

设置开机自启

sudo systemctl enable chogori-agent

查看状态

systemctl status chogori-agent

停止服务

sudo systemctl stop chogori-agent

查看日志

journalctl -u chogori-agent -f

四、关键参数详解

1.[Service]块核心参数

参数作用
Type=simple默认类型,直接运行 ExecStart 命令(前台运行)。
Type=forking适用于后台守护进程(需自行 fork)。
Restart=on-failure服务异常退出时自动重启(其他值:no, always, on-abnormal)。
User 和 Group指定运行服务的用户和组(提升安全性)。

2. 环境变量设置

单变量

Environment="KEY=value"

多变量

Environment="KEY1=value1" "KEY2=value2"

五、常见问题排查

1. 服务启动失败

# 查看详细日志
journalctl -u chogori-agent -b --no-pager

常见原因

  • ExecStart 路径错误。
  • 权限不足(用户/组或文件权限)。
  • 依赖服务未启动(如 After=postgresql.service 但 PostgreSQL 未运行)。

2. 服务无法开机自启

# 检查服务是否已启用
systemctl is-enabled chogori-agent

修复

sudo systemctl enable chogori-agent

六、总结

  • .service 文件本质:是 systemd 的配置文件,用于定义服务的启动和管理规则。
  • 核心操作:创建文件 → 编写配置 → 重载配置 → 启动/管理服务。
  • 最佳实践:始终通过 systemctl 管理服务,而非直接运行程序。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux下实现web数据同步的四种方式(性能比较)

    linux下实现web数据同步的四种方式(性能比较)

    这篇文章主要介绍了linux下常用的四种web数据同步方法,并且说明了每个方法的功能与优势,需要的朋友可以参考下
    2013-09-09
  • Linux使用NetworkManager随机生成你的MAC地址

    Linux使用NetworkManager随机生成你的MAC地址

    今天小编就为大家分享一篇关于使用NetworkManager随机生成你的MAC地址的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-09-09
  • Linux安装CUDA GCC版本不兼容问题

    Linux安装CUDA GCC版本不兼容问题

    这篇文章主要介绍了Linux安装CUDA GCC版本不兼容问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux下为PHP添加扩展库的方法

    Linux下为PHP添加扩展库的方法

    我刚刚开始学习lnmp环境,对php编译的参数基本上都不知道,在网上看了很多教程,看到在编译PhP的时候都还了很多参数,也在网上查了这些参数是什么意思,但是却不知道,哪些参数必须要加上,哪些参数不需要加
    2012-09-09
  • Linux设置文件和目录权限方式

    Linux设置文件和目录权限方式

    在Linux系统中,文件和目录的权限分为访问权限和归属权限,访问权限包括读(r)、写(w)、执行(x),可用字符或数字方式设置,归属权限涉及文件的所有者和用户组,特殊权限包括suid、sgid和Sticky位,分别用于提高程序的安全性和管理共享目录
    2024-11-11
  • Linux下强制杀死进程的方法详解

    Linux下强制杀死进程的方法详解

    这篇文章中我们给大家分享了关于Linux下强制杀死进程的方法技巧相关内容,有兴趣的朋友们可以参考了下。
    2018-09-09
  • 在 CentOS 7 中安装 MySQL 8 的教程详解

    在 CentOS 7 中安装 MySQL 8 的教程详解

    这篇文章主要介绍了在 CentOS 7 中安装 MySQL 8 的教程详解,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-10-10
  • Ubuntu16.04.4LTS安装mininet遇到的问题及解决方案

    Ubuntu16.04.4LTS安装mininet遇到的问题及解决方案

    今天小编就为大家分享一篇关于Ubuntu16.04.4LTS安装mininet遇到的问题及解决方案,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • 解决centos7操作系统开机提示error:file“/boot/grub/i386-pc/normal.mod“not found问题

    解决centos7操作系统开机提示error:file“/boot/grub/i386-pc/normal.mod“no

    公司重要业务虚拟机启动失败,提示找不到normal.mod文件,通过救援模式下手动设置grub启动分区和路径,加载基本模块,最终成功进入正常模式并引导系统
    2024-12-12
  • 使用Apache ab工具对Apache服务器进行简单的压力测试

    使用Apache ab工具对Apache服务器进行简单的压力测试

    这篇文章主要介绍了使用Apache ab工具对Apache服务器进行简单的压力测试的方法,文中还对如何查看当前Apache的连接数的方法作了介绍,需要的朋友可以参考下
    2016-03-03

最新评论