Linux:自定义系统服务实现 分类: Linux 2014-10-21 20:47 201人阅读 评论(0) 收藏
2014-10-21 20:47
507 查看
还是原来的UDP实现Client/Server文件传输插件,现代码已经全部实现.部署到客户机器上,已经满足客户需求.
由于用Java实现,老大开始要我打成两个exe部署,我就直接打成了两个jar包,在指定机器上,用脚本内部简单写java - jar Client.jar/Server.jar启动服务,停止服务则只能通过netstat,ps等查询到pid,然后kill掉.此过程让人不大喜欢啊,于是想起了另外两个常用的服务:mysqld tomcat,这两个家伙操作起来很爽.直接service mysqld/tomcat [start|stop|status|restart].我的想法就来了,直接看Tomcat/bin/下的sh文件.于是自己动手写了些脚本,实现了类似的功能.下面是实现步骤:
目标:
1.程序跟随操作系统启动,至少在系统级别3[多用户有网络]启动.
2.可以用service gaps [start|stop|status|restart] 操作自定义服务
实现步骤:
1.进入到/etc/init.d/可以看到有个tomcat,也就是说我们要自定义服务的话,需要在此目录下创建个以服务名命名的文件,我这里以gaps(gap:网闸,s:Server)写个网闸服务端的服务.
2.创建文件并且给其权限
3.编写gaps相关代码,这里我将上午写的脚本贴出,同时将其copy至gaps文件中
说明: 以下3句都不能缺少,否则执行chkconfig --add 命令时会出错
第一行:#!/bin/bash
说明使用的语言
第二行:#chkconfig:234 33 44 234:在级别2,3,4都需要启动 33:开机时顺序 44:关机时顺序
第三行:#description:this is gap server 对服务的描述
其实大家也发现下面的脚本比较简单,思路是:
a).在start中,创建个gaps.lock文件标明服务已经启动,调用startServer.sh启动Server.jar,脚本startServer.sh内容是:[$JAVA_HOME/bin/java -jar Server.jar]
b).在stop中,删除gaps.lock文件标明服务已经停止,[ps -ef | grep 'Server.jar' | grep -v grep| awk '{print $2}'|xargs kill -9 &] 用作根据Server.jar查找具体的PID并将其kill掉,其实这里和我最开始说的kill是一样的.只是封装了下而已.哈哈
c).在status中,既然start/stop都会操作文件gaps.lock,那么这么这里就判断文件是否存在就好了,当然这里可能会出现问题,比如我直接手动执行startServet.sh,那么就跳过了创建lock文件的操作,这时候执行service gaps status,还是显示未执行的.这点小问题咱们就略过去了好了,最开始的老大是只要我将Server.jar 开机启动就好了.我给他写成了个服务,已经不错了. 大家有更好的想法可以自己根据需求修改噢.表示接触Shell比较少,如有错误,还望指出.
3.将服务添加至系统服务中,查看服务状态
4.测试服务能用否?
结语:到这里,已经完成了自定义服务gaps的实现.并且可以根据操作系统级别2,3,4启动.代码不怎么难,刚接触shell,表示这是自己写的第一个像样的脚本.哈哈,大牛们别见笑了...
这里是喜欢技术,喜欢学习,喜欢交友的 Bill ....
由于用Java实现,老大开始要我打成两个exe部署,我就直接打成了两个jar包,在指定机器上,用脚本内部简单写java - jar Client.jar/Server.jar启动服务,停止服务则只能通过netstat,ps等查询到pid,然后kill掉.此过程让人不大喜欢啊,于是想起了另外两个常用的服务:mysqld tomcat,这两个家伙操作起来很爽.直接service mysqld/tomcat [start|stop|status|restart].我的想法就来了,直接看Tomcat/bin/下的sh文件.于是自己动手写了些脚本,实现了类似的功能.下面是实现步骤:
目标:
1.程序跟随操作系统启动,至少在系统级别3[多用户有网络]启动.
2.可以用service gaps [start|stop|status|restart] 操作自定义服务
实现步骤:
1.进入到/etc/init.d/可以看到有个tomcat,也就是说我们要自定义服务的话,需要在此目录下创建个以服务名命名的文件,我这里以gaps(gap:网闸,s:Server)写个网闸服务端的服务.
2.创建文件并且给其权限
3.编写gaps相关代码,这里我将上午写的脚本贴出,同时将其copy至gaps文件中
说明: 以下3句都不能缺少,否则执行chkconfig --add 命令时会出错
第一行:#!/bin/bash
说明使用的语言
第二行:#chkconfig:234 33 44 234:在级别2,3,4都需要启动 33:开机时顺序 44:关机时顺序
第三行:#description:this is gap server 对服务的描述
其实大家也发现下面的脚本比较简单,思路是:
a).在start中,创建个gaps.lock文件标明服务已经启动,调用startServer.sh启动Server.jar,脚本startServer.sh内容是:[$JAVA_HOME/bin/java -jar Server.jar]
b).在stop中,删除gaps.lock文件标明服务已经停止,[ps -ef | grep 'Server.jar' | grep -v grep| awk '{print $2}'|xargs kill -9 &] 用作根据Server.jar查找具体的PID并将其kill掉,其实这里和我最开始说的kill是一样的.只是封装了下而已.哈哈
c).在status中,既然start/stop都会操作文件gaps.lock,那么这么这里就判断文件是否存在就好了,当然这里可能会出现问题,比如我直接手动执行startServet.sh,那么就跳过了创建lock文件的操作,这时候执行service gaps status,还是显示未执行的.这点小问题咱们就略过去了好了,最开始的老大是只要我将Server.jar 开机启动就好了.我给他写成了个服务,已经不错了. 大家有更好的想法可以自己根据需求修改噢.表示接触Shell比较少,如有错误,还望指出.
#!/bin/bash #chkconfig:234 33 44 #description:this is gap server start(){ echo 'prepare start gap server ...' touch /var/lock/subsys/gaps.lock cd /usr/local/gaps/bin/ ./startServer.sh & echo 'sart gap server success !' } stop(){ echo 'prepare stop gap server ...' rm -f /var/lock/subsys/gaps.lock ps -ef | grep 'Server.jar' | grep -v grep| awk '{print $2}'|xargs kill -9 & echo 'stop gap server success !' } status(){ if [ -f /var/lock/subsys/gaps.lock ];then echo 'gap server is runing ...' else echo 'gap server is stopped ...' fi } case "$1" in start) start ;; stop) stop ;; status) status ;; restart|reload) stop start ;; *) exit 1 esac exit 0
3.将服务添加至系统服务中,查看服务状态
4.测试服务能用否?
结语:到这里,已经完成了自定义服务gaps的实现.并且可以根据操作系统级别2,3,4启动.代码不怎么难,刚接触shell,表示这是自己写的第一个像样的脚本.哈哈,大牛们别见笑了...
这里是喜欢技术,喜欢学习,喜欢交友的 Bill ....
相关文章推荐
- Linux:自定义系统服务实现 分类: Linux 2014-10-21 20:47 200人阅读 评论(0) 收藏
- Lvs + Ngnix + Haproxy + Keepalived + Tomcat 实现三种HA软负载均衡和Tomcat Session共享 分类: 系统架构 Linux 2015-06-09 21:50 168人阅读 评论(0) 收藏
- 用开源的 ffmpeg 实现屏幕录像机 分类: arm-linux-Ubuntu 2013-07-22 16:30 670人阅读 评论(0) 收藏
- C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例) . 分类: HI3531 arm-linux-Ubuntu 2013-12-16 14:19 438人阅读 评论(0) 收藏
- Linux的proc文件系统 分类: linux 2014-06-02 10:21 623人阅读 评论(0) 收藏
- 基于Linux系统的病毒 分类: arm-linux-Ubuntu 2014-06-18 17:48 463人阅读 评论(0) 收藏
- 如何实现Linux下的U盘(USB Mass Storage)驱动 分类: arm-linux-Ubuntu 2014-05-04 18:03 565人阅读 评论(0) 收藏
- 基于DirectShow的MPEG-4视频传输系统的研究与实现 分类: VC++ DirectX 2013-11-09 09:40 630人阅读 评论(0) 收藏
- Linux 系统挂载数据盘 分类: B3_LINUX 2015-01-30 18:13 228人阅读 评论(0) 收藏
- 命名管道实现进程间通信--石头、剪刀、布游戏 分类: linux 2014-06-01 22:50 467人阅读 评论(0) 收藏
- Linux系统挂载NTFS文件系统 分类: arm-linux-Ubuntu 2015-01-24 09:49 609人阅读 评论(0) 收藏
- linux如何查看系统信息 分类: ubuntu 2013-06-20 13:51 330人阅读 评论(0) 收藏
- 在U盘上安装Linux系统解决方案 分类: ubuntu 测试 2013-07-17 10:39 349人阅读 评论(0) 收藏
- Linux系统常用目录操作函数 分类: B3_LINUX 2013-02-18 16:44 486人阅读 评论(0) 收藏
- 一种基于主板BIOS的身份认证方案及实现 分类: arm-linux-Ubuntu windows驱动程序WDF 2015-05-11 11:02 372人阅读 评论(1) 收藏
- Linux系统信息查看命令大全 分类: arm-linux-Ubuntu 2013-07-22 16:28 302人阅读 评论(0) 收藏
- 一种在BIOS中嵌入应用程序的方法及实现 分类: arm-linux-Ubuntu 2014-03-25 08:33 524人阅读 评论(0) 收藏
- Pandaboard ES编译bootloader、xloader、内核、以及安卓系统 分类: arm-linux-Ubuntu 2013-07-22 16:29 367人阅读 评论(0) 收藏
- JFFS2 文件系统及新特性介绍 分类: arm-linux-Ubuntu 2013-07-22 16:30 269人阅读 评论(0) 收藏
- ucos在s3c2410上运行过程整体剖析---两种任务切换的实现方法 分类: μc /os ii 系统有关知识 2012-03-13 21:41 1102人阅读 评论(0) 收藏