centos7中systemd系统文件配置

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

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
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页