示例一:

执行脚本/root/project/systemctl/test.sh()

#########################################################################
# File Name   : test.sh
# Author      : Youner Liu
# Mail        : younger_liucn@126.com
# Created Time: Wed 14 Sep 2016 07:13:37 PM CST
# Description :
#########################################################################
#!/bin/bash

function test()
{
	count=0
	num=3000
	while [ ${count} -lt ${num} ]
	do
		if [ -f /root/project/systemctl/stop ]; then
			break
		fi
		count=$((count+1))
		date >> /root/project/systemctl/test.log
		echo "hello world ${count}" >> /root/project/systemctl/test.log
		sleep 1
	done
}

if [ ${1} == "start" ]; then
	test;
elif [ ${1} == "stop" ];then
	echo "touch  /root/project/systemctl/stop"
	touch  /root/project/systemctl/stop
fi

myservice.service源码(/usr/lib/systemd/system/myservice.service)

[Unit]
Description=my service

[Service]
Type=forking
PIDFile=/root/project/systemctl/myservice.pid
ExecStart=/usr/bin/sh /root/project/systemctl/test.sh start &
ExecStop=/usr/bin/sh /root/project/systemctl/test.sh stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

测试:

[root@node0 systemctl]# systemctl start myservice.service
Job for myservice.service failed because a timeout was exceeded. See "systemctl status myservice.service" and "journalctl -xe" for details.
[root@node0 systemctl]# systemctl status myservice.service
● myservice.service - nginx - my service
   Loaded: loaded (/usr/lib/systemd/system/myservice.service; disabled; vendor preset: disabled)
   Active: failed (Result: timeout) since Wed 2016-09-14 21:40:46 CST; 44s ago
  Process: 7459 ExecStart=/usr/bin/sh /root/project/systemctl/test.sh start & (code=killed, signal=TERM)

Sep 14 21:39:16 node0 systemd[1]: Starting nginx - my service...
Sep 14 21:40:46 node0 systemd[1]: myservice.service start operation timed out. Terminating.
Sep 14 21:40:46 node0 systemd[1]: Failed to start nginx - my service.
Sep 14 21:40:46 node0 systemd[1]: Unit myservice.service entered failed state.
Sep 14 21:40:46 node0 systemd[1]: myservice.service failed.
[root@node0 systemctl]# cat /root/project/systemctl/test.log 

Wed Sep 14 21:39:16 CST 2016
hello world 1
....
Wed Sep 14 21:40:45 CST 2016
hello world 89
Wed Sep 14 21:40:46 CST 2016
hello world 90
[root@node0 systemctl]#

systemctl start myservice.service卡住90秒;然后报出timeout

这个问题应该如何解决那????

整改

脚本/root/project/systemctl/test_start.sh

#########################################################################
# File Name   : test_start.sh
# Author      : Youner Liu
# Mail        : younger_liucn@126.com
# Created Time: Wed 14 Sep 2016 07:13:37 PM CST
# Description :
#########################################################################
#!/bin/bash

function test()
{
	count=0
	num=3000
	echo > /root/project/systemctl/test.log
	while [ ${count} -lt ${num} ]
	do
		if [ -f /root/project/systemctl/stop ]; then
			rm -rf /root/project/systemctl/stop;
			break
		fi
		count=$((count+1))
		date >> /root/project/systemctl/test.log
		echo "hello world ${count}" >> /root/project/systemctl/test.log
		sleep 1
	done
}

test

脚本/root/project/systemctl/test_stop.sh

#########################################################################
# File Name   : test_stop.sh
# Author      : Youner Liu
# Mail        : younger_liucn@126.com
# Created Time: Wed 14 Sep 2016 07:13:37 PM CST
# Description :
#########################################################################
#!/bin/bash

echo "touch  /root/project/systemctl/stop"
touch  /root/project/systemctl/stop

脚本/root/project/systemctl/test.sh

#########################################################################
# File Name   : test.sh
# Author      : Youner Liu
# Mail        : younger_liucn@126.com
# Created Time: Wed 14 Sep 2016 07:13:37 PM CST
# Description :
#########################################################################
#!/bin/bash

if [ ${1} == "start" ]; then
	sh /root/project/systemctl/test_start.sh &
elif [ ${1} == "stop" ];then
	sh /root/project/systemctl/test_start.sh &
fi

myservice.service源码(/usr/lib/systemd/system/myservice.service)

[Unit]
Description=my service

[Service]
Type=forking
#PIDFile=/root/project/systemctl/myservice.pid
ExecStart=/usr/bin/sh /root/project/systemctl/test.sh start
ExecStop=/usr/bin/sh /root/project/systemctl/test.sh stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

OK

CentOS7 添加自定义系统服务案例的更多相关文章

  1. CentOS7利用systemctl添加自定义系统服务【转】

    systemctl enable name.service 设置开机启 systemctl disable name.service 删除开机启动指令 systemctl list-units --t ...

  2. [转]CentOS7利用systemctl添加自定义系统服务

    原文:https://www.cnblogs.com/saneri/p/7778756.html CentOS7自定义系统服务 CentOS7的服务systemctl脚本存放在:/usr/lib/sy ...

  3. CentOS7添加自定义脚本服务

    一.CentOS7添加自定义脚本服务说明 在CentOS7下,已经不再使用chkconfig命令管理系统开机自启动服务和条件自定义脚本服务了,而是使用管理unit的方式来控制开机自启动服务和添加自定义 ...

  4. [实践] Android5.1.1源码 - 在Framework中添加自定义系统服务

    前言 本文的方法要修改Android源码.但只要将系统服务写出来,也可以注入system_server进程将系统服务加载到system_server中. 步骤 1. 添加一个aidl文件,我将aidl ...

  5. Centos7 安装系统服务、开机自启动

    Centos7 安装系统服务 1 编写可执行程序 * 这里可以是任意编程语言(C.C++.Java.PHP.Python.Perl ...)编写的程序: 当前假设此程序的执行目录为: /myservi ...

  6. 在CentOS 7上利用systemctl添加自定义系统服务 /usr/lib/systemd/

    在CentOS 7上利用systemctl添加自定义系统服务[日期:2014-07-21] 来源:blog.csdn.net/yuanguozhengjust 作者:yuanguozhengjust ...

  7. systemctl添加自定义系统服务

    [Service] Type=forking ExecStart=绝对路径 ExecStop=绝对路径 ExecReload=绝对路径 以上最精简版,文件/usr/lib/systemd/system ...

  8. CentOS7 利用systemctl添加自定义系统服务

    一.命令systemctl介绍 CentOS 7.0中已经没有service命令,而是启用了systemctl服务器命令,它实际上将 service 和 chkconfig 这两个命令组合到一起. 命 ...

  9. CentOS7利用systemctl添加自定义系统服务

    CentOS7的每一个服务以.service结尾,一般会分为3部分:[Unit].[Service]和[Install] 转载于互联网 [Unit] 部分主要是对这个服务的说明,内容包括Descrip ...

随机推荐

  1. Android笔记之 图片自由裁剪

    前言--项目中须要用到对用户头像的裁剪和上传功能.关于裁剪.一開始是想自己来做,可是认为这个东西应该谷歌有开发吧,于是一搜索官方文档.果然有.于是.就果断无耻地用了Android自带有关于照片的自由裁 ...

  2. react中性能优化的点

    react提升代码性能的点 1.绑定如果改变作用域点话放在constructor里面做,这样可以保证整个程序的作用域绑定操作只会执行一次,而且避免子组件的无谓渲染. 2.内置的setState是个异步 ...

  3. ACM-ICPC 2018 徐州赛区网络预赛 G. Trace【树状数组维护区间最大值】

    任意门:https://nanti.jisuanke.com/t/31459 There's a beach in the first quadrant. And from time to time, ...

  4. 2018.11.1 Hibernate中的Mapper关系映射文件

    Customer.hbm.xml 基本的参数都在里面了 <?xml version="1.0" encoding="UTF-8"?> <!DO ...

  5. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(三) 激动人心的时刻到啦,实现1v1聊天

    看起来挺简单,细节还是很多的,好,接上一篇,我们已经成功连接singalR服务器了,那么剩下的内容呢,就是一步一步实现聊天功能. 我们先看看缺什么东西 点击好友弹框之后,要给服务器发消息,进入组Gro ...

  6. mybatis学习记录三——SqlMapConfig.xml相关参数详解

      5       SqlMapConfig.xml mybatis的全局配置文件SqlMapConfig.xml,配置内容如下: properties(属性) settings(全局配置参数) ty ...

  7. normal 普通身份 sysdba 系统管理员身份 sysoper 系统操作员身份 dba和sysdba

    as sysdba 就是以sysdba登录,oracle登录身份有三种:normal 普通身份sysdba 系统管理员身份sysoper 系统操作员身份每种身份对应不同的权限 sysdba权限:●启动 ...

  8. centos 安装配置 rabbitmq 以及nginx转发

    安装erlang cd /tmp wget http://erlang.org/download/otp_src_18.3.tar.gz . cd /opt/otp_src_18. yum -y in ...

  9. 菜鸟笔记 -- Chapter 6.4 面向对象的三大特性

    6.4.1  三大特性概述 面向对象的三大特性是Java中一个很重要的基本理念. 封装是面向对象的核心思想.将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的意思.采用 ...

  10. jenkins添加环境变量 ,win 10的 环境变量如下,win7 就是不加也可以运行,不报 “python 不是内部命令 ” 的错误。

    jenkins 添加win 10的 环境变量如下,win7 就是不加也可以运行,不报 “python 不是内部命令 ” 的错误,暂时不知道怎么回事.    jenkins这样添加环境变量 .