如何制作Linux服务脚本

Linux服务脚本示例

如何制作一个Linux启动服务

         Linux在启动的时候都会跑很多系统自带的服务脚本,来控制系统服务的开启和关闭。这些服务是系统自带的,我们可以查看这些服务及其对应的脚本(ls /etc/init.d/)。这些服务有独立服务,也有依赖服务,依赖服务有被依赖服务和依赖别的服务。今天我们就来看看怎么来制作一个系统独立服务,方便我们以后需要自己手动写服务脚本的时候做个参考!申明:此次实验服务脚本不带任何系统服务功能,只是一个测试用的没有实际内容的脚本,我们用它来了解系统启动服务的整个流程和相应的理论知识!

8-3

 

1、进入/etc/init.d/目录下(系统启动的服务都放在这个目录下,所以我们自己做的服务脚本也放在这里),编辑一个测试服务脚本(vim testsrv)。

8-1

注释:进入vim编辑器

服务脚本有三行格式是必须要写上的:#!/bin/bash,#/chkconfig,#description。

# chkconfig :  runlevels  ss  kk (runlevels:表示系统启动的模式(0-6),一般用3和5,;ss:表示开始运行的次序,kk:表示关闭程序的次序,- :表示七种模式都不启动)

第一行:首先说明脚本是在什么shell下运行:bash shell

第二行:写出我们服务脚本必须要有的内容:指明系统启动模式、服务运行及关闭次序

第三行:脚本描述,此处的脚本为测试脚本

这三行写完后,我们就可以写服务脚本的正文了,写出此服务脚本的工作内容。

 

2、在这里我就用一个case语句来完成我们测试脚本的开启、关闭、以及状态检测。

8-2

source /etc/init.d/functions:我们把系统脚本functions写入我们的脚本是方便我们下面调用它里面的action,关于action我们下面再说。

/var/lock/subsys/testsrv:系统开启和关闭的过程中,会去检查/var/lock/subsys下的文件,逐一关闭每个服务。所以我们可以用来判断文件是否存在,进而判断服务的状态。

action:关于action,我们可以来查看functons文件中的action的作用,如下图1所示:less functions  /action,我们可以看到定义了action的作用是打印出相关操作的结果并用特定的颜色显示;图2为我们很好的展示了系统的自带的functions中action的作用,打印出来的结果直观而且很好看,我们的实验中就可以直接调用functions中的action功能。

8-5

8-4

 

3、脚本编辑完成,加上执行权限,测试脚本的功能。

chmod +x /etc/init.d/testsrv ,现在我们已经可以直接把这个脚本拿过来用了,我们现在来执行一下这个脚本,如下图所示:服务的开启,关闭以及状态查询都是正常的,并且服务开启后也会在相应的目录(/var/lock/subsys/)下生成testsrv文件。但是,现在的脚本我们还没有把它添加到系统真正的服务列表里去,我们可以用chkconfig –list来查看,所以相应的/etc/rc5.d/下面也就还没有testsrv相应的文件。接下来我们就要把这个服务脚本加到服务列表里去,让它跟其他的系统启动服务一样正常的工作。

8-6

 

4、添加服务,并验证服务的功能

8-7

如上图所示:用 chkconfig –add testsrv 命令添加服务到系统服务的列表里,然后用 chkconfig –list testsrv 检测服务的相关设置都是正确的(3和5模式下为on)。

testsrv 服务添加以后我们应该就可以从相应的目录下看到我们设置的服务启动顺序,如下图所示:可以看到s95打头的文件。

8-8

我们也可以后续用命令更改服务的启动和关闭:chkconfig –level 3/5 testsrv off ,这样我们可以控制此服务需不需要在3和5模式下运行,当然我们也可以直接更改服务的脚本里面的设置,顺带验证我们脚本功能的完整性,如下图所示:我们把testsrv的3和5模式下关闭运行,那么就会在相应的文件中生成K03打头的文件,说明,脚本没有为问题。

8-9

 

5、至此,我们自己写的服务脚本已经全部测试完毕。那么系统在下次重启的时候就会在启动列表里展示此服务!OK!

8-10

 

        我们自己写的服务一定要注意脚本的格式和内容的准确定,不能有BUG和格式问题。在添加服务的时候也要注意,测试好后再去使用。虽然都是高手,但是避免出现很多系统崩溃的问题。

 

 

 

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98033

(1)
上一篇 2018-05-10 13:41
下一篇 2018-05-10 14:29

相关推荐

  • sed命令

    sed命令 sed是一种流编辑器,用于对文本逐行读取逐行处理,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把处理后结果输出到标准输出。接着处理下一行,这样不断重复,直到文件末尾。 命令语法 sed [OPTION]… {script-only-if-no-othe…

    Linux笔记 2018-06-12
  • 程序包编译

    程序包编译安装:Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作 成二进制格式的rpm包,而后再安装源代码–>预处理–>编译–>汇编–>链接–>执行源代码组织格式:多文件:文件中的代码之…

    Linux笔记 2018-04-22
  • 网络管理

    tcp udp 三次握手四次挥手 子网划分 ip nmcli

    2018-05-02
  • Linux的tail 与head 命令

    head命令是用来查看具体文件的前面几行的内容,具体格式如下: head <filename>: 你可以通过head命令查看具体文件最初的几行内容,该命令默认是前10行内容,如果你想查看前面更多内容,你可以通过一个数字选项来设置,例如 head -20 install.log 通过上面命令你可以查看install.log这个文件前面20行的内容 …

    2018-04-16
  • 关于grep 与 正则表达式的那些事

    首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同! 正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串。vim、grep、awk 、sed 都支持正则表达式,也正是因为由于它们支持正则,才显 得它们强大grep (缩写来自Globally search a Regular Expression and…

    Linux笔记 2018-04-08
  • systemd服务管理

    在systemd中,之前服务的启动脚本将以Unit(单元)的形式存在,因此服务管理=单元管理。

    Linux笔记 2018-06-12