Linux系统(Debian)添加自定义服务的方法

⌚Time: 2022-05-29 02:00:51

👨‍💻Author: Jack Ge

操作系统:Debian GNU/Linux 7.0 (wheezy)

安装chkconfig

chkconfig是可以查询和设置系统服务的工具,通俗的说,chkconfig是一个用于维护/etc/rc[0-6].d目录的命令行工具。


sudo apt-get install chkconfig

在/etc/init.d/目录下,编写自定义服务脚本myservice.sh,myservice.sh能够接受start、stop参数,并且在启动和结束后能够打印相关信息,并保存日志到log.txt中


#!/bin/sh

#chkconfig: 2345 90 15

#description: this is a test service

case "$1" in

    start)

        echo [$(date "+%Y-%m-%d %H:%M:%S")] myservice started >> /home/a/log.txt

        echo "\033[40;32mmyservice.sh started!\033[0m"   

        ;;

    stop)

        echo [$(date "+%Y-%m-%d %H:%M:%S")] myservice stopped >> /home/a/log.txt 

        echo "\033[40;32mmyservice.sh stopped!\033[0m"   

        ;;

    *)

        ;;

esac

其中#chkconfig: 2345 90 15表示此服务在系统运行级别2-5下进行开机自启,启动优先级是90,停止优先级是15。优先级数字越大,优先级越低。

对于系统运行级别,linux共有0-6共7个运行级别。在系统启动时会对应执行/etc/rc[0-6].d目录下的脚本。

增加服务


chkconfig --add myservice.sh

之后会发现,在rc[2-5].d目录下,多了名为S17myservice.sh的软连接。说明系统会在运行级别为2-5时,自动启动myservice.sh脚本,并且以start作为参数(S开头的脚本启动时start作为参数(start),K开头的脚本启动时以stop作为参数(kill))

之后重启系统,会发现该服务得到了自动启动,并在log.txt中写入了信息

也可以用service命令对服务进行管理


service myservice.sh start

service myservice.sh stop

但是service命令并不会影响服务的开机自启,在服务停止后,仍旧会在2-5系统运行级别启动

如果需要移除服务,使用以下命令


chkconfig --del myservice.sh

之后发现在rc[2-5].d目录下,已经没有myservice.sh的软连接存在,并且服务状态也变成了off,不会伴随开机启动