centos7中systemd系统文件配置

原创 2018年04月15日 13:02:29

CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,需要开机不登陆就能运行的程序,存在系统服务里。
即:/usr/lib/systemd/system目录下每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],我写的这个服务用于开机运行tomcat项目

    vim /usr/lib/systemd/system/tomcat.service  

    1. [Unit]  
    2. Description=tomcatapi  
    3. After=network.target  
    4.    
    5. [Service]  
    6. Type=forking  
    7. PIDFile=/usr/local/tomcat/tomcat.pid  
    8. ExecStart=/usr/local/tomcat/bin/startup.sh  
    9. ExecReload=  
    10. ExecStop=/usr/local/tomcat/bin/shutdown.sh  
    11. PrivateTmp=true  
    12.    
    13. [Install]  
    14. WantedBy=multi-user.target  
[Unit]部分主要是对这个服务的说明

内容包括Description和After,Description用于描述服务,After用于描述服务类别;

[Service]部分是服务的关键,是服务的一些具体运行参数的设置

Type=forking是后台运行的形式;
PIDFile为存放PID的文件路径;
ExecStart为服务的运行命令;
ExecReload为重启命令;ExecStop为停止命令;
PrivateTmp=True表示给服务分配独立的临时空间;
注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错;

[Install]部分是服务安装的相关设置

可设置为多用户的服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,这时就可以利用systemctl进行测试了最后用以下命令将服务加入开机启动即可:

systemctl enable tomcat  

详细参数需要去官网查看

======================

如下为mysql的systemd启停配置:
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
After=network.target
After=syslog.target

[Service]
Environment="CONFFILE=/etc/my.cnf"
User=mysql
Group=mysql
Type=forking
PIDFile=/data/baseDB/mysql/mysql.pid
ExecStart=/etc/init.d/mysql start
ExecStop=/etc/init.d/mysql stop
Restart=on-failure
RestartSec=10s
KillMode=control-group
RestartPreventExitStatus=1
PrivateTmp=true

[Install]
WantedBy=multi-user.target

==========================

第二例:zabbix客户端
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/data/apps/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/data/apps/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStartPre=/data/apps/zabbix/scripts/init-agentconf.sh
ExecStart=/data/apps/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s

[Install]
WantedBy=multi-user.target

=================

第三例:redis

[Unit]
Description=Redis persistent key-value database
After=network.target

[Service]
Environment="CONFFILE=/etc/redis.conf"
User=redis
Group=redis
Type=forking
ExecStart=/data/baseDB/redis/src/redis-server /etc/redis.conf --daemonize no &
ExecStop=/bin/kill -SIGTERM $MAINPID
PIDFile=/data/baseDB/redis/redis.pid
Restart=on-failure
RestartSec=10s
KillMode=control-group
RestartPreventExitStatus=1
PrivateTmp=true

[Install]

WantedBy=multi-user.target

配置完,添加服务后:

systemctl enable mysql.service;

如果在修改了unit配置文件,需要重新加载才能生效:

systemctl daemon-reload
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34409701/article/details/79948425

系统管理之Systemd详解(centos7)

http://www.aichengxu.com/linux/11318300.htm 这篇着重讲解下Syetemd的相关知识,systemd可以说是centos7上的重大改革,功能之强大媲...
  • liukuan73
  • liukuan73
  • 2017-02-06 21:48:16
  • 1310

centos7之docker使用systemd

# vim Dockerfile ----------------------------------------------------------------------------------...
  • joyjj0218
  • joyjj0218
  • 2016-01-23 15:35:38
  • 949

在systemd(CentOS7)自启动zookeeper

zookeeper的自启动脚本,如果是 sysV 模式(CeontOS6或以下版本),可以直接使用下载版本中的 src 目录下对应的 sysV 自启动包,再chkconfig即可。老方法,简单,就不说...
  • xiaoyu411502
  • xiaoyu411502
  • 2016-05-18 10:35:35
  • 3420

CentOS 7之Systemd详解之单元配置systemd.unit

Systemd详解,CentOS 7系统管理 Systemd
  • yuesichiu
  • yuesichiu
  • 2016-05-06 14:01:42
  • 3450

systemd的使用(centos7之后使用systemd代替init)

systemd 是 Linux 下一个与 SysV 和 LSB 初始化脚本兼容的系统和服务管理器。systemd 使用 socket 和 D-Bus 来开启服务,提供基于守护进程的按需启动策略,保留了...
  • drdairen
  • drdairen
  • 2016-05-17 17:02:56
  • 3605

CentOS 7中Systemd取代init进程

CentOS 7中Systemd取代init进程由于这个学期学校有Linux课程,我也一直期待着这门课,为了练习在Linux上搭建一些应用,so 我把原来的Windows2012的云服务器换成了Cen...
  • Holmofy
  • Holmofy
  • 2017-04-08 13:56:41
  • 1267

CentOS 7 巨大变动之 systemd 取代 SysV的Init

1 Systemd是什么2 Systemd物理文件组成3 Systemd运行原理4
  • smstong
  • smstong
  • 2014-09-16 16:57:13
  • 42742

CentOS 7 安装Docker服务

Docker 简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制...
  • wh211212
  • wh211212
  • 2016-11-15 15:16:25
  • 1126

CentOS 7将linux服务加入系统启动 systemd service

在CentOS 7上利用systemctl添加自定义系统服务。 使linux服务开机自启动,注意下列指令中的配置文件需要写绝对路径。 [Unit] Description=Share local p...
  • u010887744
  • u010887744
  • 2016-12-31 18:55:01
  • 2709

CentOS 7之Systemd详解之服务单元设置system.service

名称 systemd.service - 服务单元配置 概要 service.service 描述 以 .service 结尾的单元文件,用于封装一个被 systemd 监...
  • yuesichiu
  • yuesichiu
  • 2016-05-23 21:59:55
  • 9481
收藏助手
不良信息举报
您举报文章:centos7中systemd系统文件配置
举报原因:
原因补充:

(最多只允许输入30个字)