linux 添加 service 服务并自动添加 chkconfig 启动级别
下面以添加一个叫做watchcat的服务为例进行说明:
1、写一个提供给service命令使用的脚本
service 命令的使用方法一般如下
启动:
$ service watchcat start
停止:
$ service watchcat stop
重启:
$ service watchcat restart
所以这个watchcat脚本就需要至少接受这三个命令
大概如下:$ cat watchcat

#!/bin/bash
function start_cat()
{
echo "cat run ..."
}
function stop_cat()
{
echo "cat stop ..."
}
case "$1" in
start)
start_cat
;;
stop)
stop_cat
;;
restart)
stop_cat
start_cat
;;
*)
echo "Usage : start | stop | restart"
;;
esac
注:这个脚本不是最终脚本,还不能作为服务使用
2、还需要让这个脚本被 chkconfig 支持
其实这个很重要,那就是在刚刚的脚本上面添加几行注释,这几行只是是用来给chkconfig使用的。也就是说,当chkconfig 看到这几行注释的时候,它是不会把这几行当做注释的。
完整的脚本如下:
1 #!/bin/bash
2 #
3 # watchcat start/stop cats
4 #
5 # chkconfig: 12345 80 90
6 # description: start/stop cats
7 #
8 ### BEGIN INIT INFO
9 # Description: start/stop cats
10 ### END INIT INFO
11
12 function start_cat()
13 {
14 echo "cat run ..."
15 }
16
17 function stop_cat()
18 {
19 echo "cat stop ..."
20 }
21
22 case "$1" in
23 start)
24 start_cat
25 ;;
26
27 stop)
28 stop_cat
29 ;;
30
31 restart)
32 stop_cat
33 start_cat
34 ;;
35 *)
36 echo "Usage : start | stop | restart"
37 ;;
38 esac
现在这个脚本算是可以正式使用了。
上面代码的第5行是必须的,这是给chkconfig看的。
第5 行的12345是表示这个watchcat 程序是需要在系统的运行级别为1、2、3、4、5的时候都进行启动的。80和90 的意思是在rc1.d/~rc5.d/目录下建立S80xxxxx和K90xxxxx的链接文件的。
3、配置watchcat的service支持
首先给watchcat添加可执行权限:
$ chmod 775 watchcat
把脚本添加复制到/etc/init.d/目录下
$ cp watchcat /etc/init.d/
cp: cannot create regular file `/etc/init.d/watchcat': Permission denied
$ sudo cp watchcat /etc/init.d/
此时就可以使用service进行控制了,如下:
$ service watchcat start
cat run ...
$ service watchcat stop
cat stop ...
4、然并卵,这只是完成了手动控制的阶段,还需要开机启动
先查看一下:
$ chkconfig --list watchcat service watchcat supports chkconfig, but is not referenced in any runlevel (run 'chkconfig --add watchcat')
说我们没有添加这个叫watchcat的服务,所以进行添加: $ chkconfig --add watchcat You do not have enough privileges to perform this operation. $ sudo chkconfig --add watchcat
检查添加后的结果: $ chkconfig --list watchcat watchcat 0:off 1:on 2:on 3:on 4:on 5:on 6:off
这样就完成了。
引用文献:
http://www.cnblogs.com/jimeper/archive/2013/03/12/2955687.html
http://www.linuxidc.com/Linux/2015-01/111438.htm
作 者:fengbohello
个人网站:http://www.fengbohello.top/
E-mail : fengbohello@foxmail.com
欢迎转载,转载请注明作者和出处。
因作者水平有限,不免出现遗漏和错误。希望热心的同学能够帮我指出来,我会尽快修改。愿大家共同进步,阿里嘎多~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2014-10-29 jsoncpp代码实例