? ? ? ?编写一个名为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服务已经启动."
else
echo "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配置文件。