编写一个名为myprog的系统服务脚本,通过位置变量s1指定的start、stop、restart、status控制参数,分别用来启动、停止、重启sleep进程,以及查看sleep进程的状态。其中,命令sleep用来暂停指定秒数的时间,这里仅用做测试,在实际运维工作中应将sleep改为相应后台服务的控制命令序列。
[root@node01 ~]# vim myprog
#!/bin/bash
case "$1" in
start)echo -n "正在启动sleep服务..."if sleep 7200 &then //在后台启动sleep进程echo "OK"fi;;
stop)echo -n "正在停止sleep服务..."pkill "sleep" &> /dev/null
echo "OK" //停止sleep进程;;
status)if pgrep "sleep" &>/dev/null ; then //判断并提示sleep进程状态echo "sleep服务已经启动."elseecho "sleep服务已经停止."fi;;
restart) //先停止、再启动服务$0 stop$0 start;;
*) //默认显示用法信息echo "用法:$0 {start|stop|status|restart}"
esac
[root@node01 ~]# chmod +x myprog //添加执行权限
[root@node01 ~]# ./myprog start
[root@node01 ~]# ./myprog status
[root@node01 ~]# ./myprog stop
[root@node01 ~]# ./myprog reload //未提供此参数,按默认处理
在Linux系统中,源码软件包编译安装后提供的服务控制脚本使用了 case分支语句;也有一些 源码包没有提供服务控制脚本,编译安装后可参照上例自行编写服务控制脚本,平时控制各种系统 服务时,提供的start、stop、restart等位置参数,正是由case语句结构来识别并完成相应操作的,有 兴趣的同学可自行查阅这些脚本内容。
若要将myprog 服务交给 systemd来管理,还需要在/lib/systemd/system 目录下添加相应的 myprog.service配置文件。