linux-使用systemctl添加自定义服务,开机自启动

  • Post author:
  • Post category:linux


[Unit]

Description:给出当前服务的简单描述。

Documentation:给出文档位置。

After:service服务之后要启动的。

Before:service服务之前要启动的。

[Service]

Type:启动类型,它可以设置的值如下:

  1. simple(默认值):ExecStart字段启动的进程为主进程
  2. forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程(后台运行)
  3. oneshot:类似于simple,但只执行一次,Systemd 会等它执行完,才启动其他服务
  4. dbus:类似于simple,但会等待 D-Bus 信号后启动
  5. notify:类似于simple,启动结束后会发出通知信号,然后 Systemd 再启动其他服务
  6. idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合)

PrivateTmp=true :创建私有的内存临时空间

User=root :以什么用户身份运行

SuccessExitStatus=143 :成功退出状态

PIDFile=/opt/web/mybase/jetty.pid :pid文件存放位置

[Install]

Install区块,定义如何安装这个配置文件,即怎样做到开机启动。

WantedBy字段:表示该服务所在的 Target。

常用的 Target 有两个:

multi-user.target:表示多用户命令行状态;

graphical.target:表示图形用户状态,它依赖于multi-user.target。

Target的含义是服务组,表示一组服务。执行systemctl enable sshd.service命令时,sshd.service的一个符号链接,就会放在/etc/systemd/system目录下面的multi-user.target.wants子目录之中

下面是一个jetty的服务示例

[Unit]

Description=Jetty Web Application Server

After=syslog.target

[Service]

Type=forking

ExecStart=/data/scm/jetty/jetty-distribution-9.4.31.v20200723/bin/jetty.sh start

ExecReload=/data/scm/jetty/jetty-distribution-9.4.31.v20200723/bin/jetty.sh restart

ExecStop=/data/scm/jetty/jetty-distribution-9.4.31.v20200723/bin/jetty.sh

PrivateTmp=true

User=root

SuccessExitStatus=143

[Install]

WantedBy=multi-user.target

注意:每次修改/lib/systemd/system/jetty.service服务后,都需要执行systemctl daemon-reload来重载服务

//查看service状态: systemctl status jetty

//配置开机启动: systemctl enable jetty

//启动jetty: systemctl start jetty

//停止jetty: systemctl stop jetty

//重启jetty: systemctl restart jetty



版权声明:本文为qq_40308101原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。