文章目录

  • 一、.service文件的介绍
    • 1.1组成
    • 1.2 文件存放位置
    • 1.3 [Unit]字段介绍 ——主要给出服务描述、启动顺序和依赖关系
    • 1.4 [Service]字段介绍——服务的启动行为以及如何启动、重启、停止等信息
    • 1.5 [Install]字段介绍——何安装这个配置文件,即怎样做到开机自启
  • 二、案例
  • 三、注意事项

一、.service文件的介绍

1.1组成

Linux中.service文件是某项服务对应的配置文件,可用于systemd管理和控制的服务的设置。.service 文件通常包含3个模块,即[Unit]控制单元,表示启动顺序和依赖关系;[Service]服务,表示服务的定义;[Install]安装,表示如何安装配置文件。

1.2 文件存放位置


.service 文件配置的服务常用systemd管理。然而,systemd有系统和用户区分;
系统(/user/lib/systemd/system/)
用户(/etc/lib/systemd/user/)。
一般系统管理员手工创建的单元文件建议存放在/etc/systemd/system/目录下面。

1.3 [Unit]字段介绍 ——主要给出服务描述、启动顺序和依赖关系

Description:当前服务的简单描述。\Documentation:服务文档\After和Before:表示启动顺序,不涉及依赖关系。Before=xxx.service表示本服务在xxx.service 启动之前启动,
After=yyy.service表示本服务在yyy.service 之后启动。\Wants:表示该服务和某服务存在某种弱依赖关系,即某服务停止运行或退出不影响该服务继续运行。\Requires:表示”强依赖”关系,即某服务停止运行或退出,改服务也必须停止运行。\Wants字段与Requires字段只涉及依赖关系,与启动顺序无关,默认情况下是同时启动的。
复制代码

1.4 [Service]字段介绍——服务的启动行为以及如何启动、重启、停止等信息

Type=simple(默认值):systemd认为该服务将立即启动。
服务进程不会fork。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket激活型。\Type=forking:systemd认为当该服务进程fork,且父进程退出后服务启动成功。
对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。
使用此启动类型应同时指定 PIDFile=,以便systemd能够跟踪服务的主进程。\Type=oneshot:这一选项适用于只执行一项任务、随后立即退出的服务。
可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
Type=oneshot允许指定多个希望顺序执行的用户自定义命令。\Type=notify:与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。
这一通知的实现由 libsystemd-daemon.so 提供。\Type=dbus:若以此方式启动,当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪。\Type=idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。
除此之外,其他行为和Type=simple 类似。\PIDFile:pid文件路径ExecStart:指定启动单元的命令或者脚本,
ExecStartPre和ExecStartPost节指定在ExecStart之前或者之后用户自定义执行的脚本。ExecReload:指定单元重启时执行的命令或者脚本。ExecStop:指定单元停止时执行的命令或者脚本。PrivateTmp:True表示给服务分配独立的临时空间Restart:这个选项如果被允许,服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作。RemainAfterExit:如果设置这个选择为真,服务会被认为是在激活状态,即使所以的进程已经退出,
默认的值为假,这个选项只有在Type=oneshot时需要被配置。User:字段可以设置服务的用户名WorkingDirectory:字段指定服务的安装目录
复制代码

1.5 [Install]字段介绍——何安装这个配置文件,即怎样做到开机自启

Alias:为单元提供一个空间分离的附加名字。\RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。\Also:指出和单元一起安装或者被协助的单元。\DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例。\WantedBy字段:表示该服务所在的 Target。\Target的含义是服务组,表示一组服务。\WantedBy=multi-user.target指的是服务所在的Target是multi-user.target
Systemd 有默认的启动 Target就是multi-user.target,在这个组里的所有服务,都将开机启动。

二、案例

  1. 进入/etc/systemd/system目录,下面以httpd服务为例,首先在目录下自定义一个httpd.service文件,内容如下
[Unit]
Description=httpd      #当前配置文件的描述信息
After=network.target        #表示当前服务是在那个服务后面启动,一般定义为网络服务启动后启动[Service]
Type=simple   #定义启动类型 simple  表示当前服务启动完毕,会通知Systemd,再继续往下执行;forking表示后台运行模式
#ExecStart=/usr/local/apache/bin/apachectl start   #定义启动进程时执行的命令,命令需要绝对路径
#ExecReload=/usr/local/apache/bin/apachectl restart      #重启服务时执行的命令,命令需要绝对路径
#ExecStop=/usr/local/apache/bin/apachectl stop     #定义关闭进程时执行的命令,命令需要绝对路径
# 以下是jar包的使用
User=root
WorkingDirectory=/home/zykj  # 工作目录
PrivateTmp=true #是否分配独立空间
Restart=always # 服务重启的时候进程会退出,会通过systemctl命令执行清除并重启的操作
ExecStart=/usr/java/jdk1.8.0_311/bin/java -jar /home/zykj/backstage-bweb-0.0.1-SNAPSHOT.jar      # jar包的启动命令 (jdk路径/java -jar jar包路径)
ExecStop=/usr/bin/kill -15  $MAINPID # 固定写法
#ExecReload=/usr/local/apache/bin/apachectl restart  # 服务停止命令[Install]
WantedBy=multi-user.target    #表示多用户命令行状态

注意:WorkingDirectory和ExecStart(jdk路径/java -jar jar包路径)等的路径要一直

  1. 如果你是普通用户,则运行sudo systemctl enable 文件名.service
systemctl enable 文件名.service

就会在/etc/systemd/system/multi-user.target.wants/目录下新建一个/usr/lib/systemd/system/文件名.service 文件的链接。

这一步也即是将你的服务加入自启。

  1. 启动服务
sudo systemctl start 文件名.service
  1. 查看是否启动成功
sudo systemctl status文件名.service

三、注意事项

当你的user是root的时候,只有root权限的用户才能看到 jps命令 下 显示的java进程;

且PrivateTmp(默认为true)为false才可以查看,要不然jps还是查看不到java进程

服务器配置service文件实现jar包自启功能相关推荐

  1. 无需Java环境,Jar包一键启停(静默启停),开机自启,读取外部配置文件

    无需Java环境,Jar包一键启停(静默启停),开机自启,读取外部配置文件 前言 一.目录结构 1.根目录 2.bin 目录 3.conf 目录 4.target 目录 二.文件内容 1.startu ...

  2. 手动将web项目的class文件打成jar包,手动打jar包,java -cvf,IDE打包底层指令

    手动将web项目的class文件打成jar包. 我们的项目在使用IDE进行编译后,在项目的target目录下将会生成class文件.我们可以将class文件打成jar包. 使用的到命令为: 在targ ...

  3. Java程序启动同时复制resources下文件到jar包同级目录

    Java代码调用.exe,包括获取exec()中的日志并打印,可以看我之前的博客 一.Java调用exe打包成jar的调用方式有俩种: Java程序中resources下的exe等文件,是可以同时打包 ...

  4. Windows下使用IDEAS对cala文件打jar包

    最近工作中需要将scala文件打成jar包放到spark集群上运行,看网上参考资料不多,故将自己的实践与大家分享. 闲话少叙,直接开干: 准备工作: 1.Java,在windows配置Java环境的相 ...

  5. 将java文件打成jar包

    新建一个配置文件mainfest.mf 设置内容Main-Class: Str2CamelCaseStr 把配置文件放到编译好的java文件 xxx.class同目录下面 到当前目录打开命令窗口 执行 ...

  6. IDEA 对单个的java class文件打成jar包

    IDEA 对单个java文件打jar包,在打jar包的时候,需要先对java文件进行编译,然后在对.class文件进行打包,在打包的时候需要注意,自己的java文件中是否包含内部类,如果包含内部类的话 ...

  7. 怎么把class文件打成jar包

    网上的例子不是太清楚,自己写一下过程并加几个图,免得今后又得看半天资料 1. 把两个.class文件打成jar包 (1)打开cmd (2)进入到准备打包的目录,找到要打包的文件,这里分别是 Examp ...

  8. rk3566 Android 11添加自定义service并提供jar包

    环境 基于rk3566 android 11 系统 步骤 添加aidl文件 frameworks/base/core/java/android/os/IMyTestService.aidl packa ...

  9. ◦将一个java文件变成Jar包的过程

    编译一个带包的java文件,首先通过javac空格 –d(这里一定要上-d)空格点(表示放在哪个目录下面,点表示放在当前目录)完整类名.java 运行包中的一个.class文件的方式:java 完整包 ...

最新文章

  1. 现在,用音频也能指挥GAN生成图像了
  2. 2018,微软可能要在方方面面融入进企业
  3. Eucalyptus系统部署
  4. JSONObject和JSONArray 以及Mybatis传入Map类型参数
  5. 编写干净的测试–提防魔术
  6. 开发人员工作周报_如何增加找到开发人员工作的机会
  7. Spring Cloud Alibaba基础教程版本升级:0.2.1-gt;0.2.2
  8. 生成微信蓝色昵称,原来如此简单
  9. 【Vue2.0】—mixin混入 (十五)
  10. 如何解决PHP里大量数据循环时内存耗尽的问题
  11. DataSet用法详细 转
  12. 机器学习算法(十):线性回归之最小二乘法
  13. python核心技术与实战,Python核心技术与实战——十五|深入了解迭代器和生成器...
  14. 转载 java基础题(面试必知)
  15. 未来10年的11个机会
  16. Java:Java实现简单闹钟设计
  17. UPC 2020年夏混合个人训练第五十场【DEG】
  18. 刀口舔血,步步惊心!——Android中小开发者/团队广告盈利全攻略
  19. 华为 Python:初级能力测评
  20. 计算广告——introduction

热门文章

  1. cdr如何画空心字?
  2. Android-网络编程:快乐词典
  3. c51单片机期末复习个人总结2单片机基本原理
  4. C++:实现量化Mersenne twister梅森旋转算法测试实例
  5. 遗传算法实现引物设计(Python语言)
  6. 微积分英文词汇,高数名词中英文对照,高等数学术语英语翻译一览
  7. x58添加uefi_X58平台老台式机升级固态硬盘以及三通道内存
  8. 航空插头网线转接2.0排针线序图
  9. 常微分方程的解法 (一): 常微分方程的离散化 :差商近似导数、数值积分方法、Taylor 多项式近似
  10. 创建vue-vite项目