1. 需求
写出网络服务独立进程模式下Rsync的系统启动脚本。例如:/etc/init.d/rsyncd {start|stop|restart}。
要求:
- 要使用系统函数库技巧
- 要用函数,不能将一堆代码混在一起
- 可悲chkconfig管理
2. 过程
2.1. 实现过程
2.1.1. 第一步
rsync服务的简单准备,代码如下:
2.1.2. 第二步
实现rsync服务的启动和停止方法,以及端口检测方法。
停止方法:
启动方法:
2.1.3. 第三步
常规方法有检测端口以及进程是否存在,还可以当服务启动时,创建一个锁文件(/var/lock/subsys/),而当服务停止时,就删除这个锁文件,这样就可以通过判断这个文件的有无,来确定服务是否是启动状态,这是一些系统脚本常用的手法。
2.1.4. 第四步
开发rsync服务的启动脚本/etc/init.d/rsyncd
,内容如下:
此脚本可以实现基本的启动和停止功能,但是,离专业和规范还有一定的距离。比如更专业的可以用case语句实现。
2.2. 实现chkconfig管理
2.2.1. 实现说明
chkconfig命令是系统用来管理脚本开机自启动的命令,但是需要脚本支持chkconfig管理才行,具体的方法是在脚本的开头解释器之后加入如下两行内容:
说明:
- 两行内容的开头都要有
#
号 - 第一行是说需要chkconfig管理,2345是Linux运行级别,表示该脚本默认在2345级别为启动状态,20是脚本的开始启动顺序,80是脚本的停止顺序,这两个数字都是不超过99的数字。一般情况下,可以根据服务的启动需求来选择,应用服务一般要靠后启动为准,越早停止越好。
2.2.2. 最终的脚本
最终的rsync的启动脚本如下:
2.3. 最后的步骤
设置开机自启动的过程如下:
设置前检查rsyncd的开机自启动情况
1chkconfig --list rsyncd #<==因为没有设置,所以没有输出添加脚本开机自启动并检查:
123chkconfig --add rsyncd #<==注意,rsyncd脚本一定要放在/etc/init.d/目录下chkconfig list rsyncd #<==检查自启动结果,2345级别默认为启动状态rsyncd 0: 关闭 1: 关闭 2: 启用 3: 启用 4: 启用 5: 启用 6: 关闭