如何制作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/98053

(0)
上一篇 2018-05-10 17:23
下一篇 2018-05-10 17:38

相关推荐

  • 马哥Linux第二周作业

    第二周作业(6.25-7.1)

    Linux笔记 2018-06-30
  • 计算机的基础

    基础知识

    2018-07-23
  • Linux基础知识

    Linux是什么? 想要了解linux,我们就需要先介绍一下计算机。什么是计算机?计算机的功能和组成部分? 计算机是什么呢?它是一种能接收和存储信息 ,并按照存储在其内部的程序对海量数据进行自动、高速地 处理,然后把处理结果输出的现代化智能电子设备。 它的基本功能就是接收用户输入的指令,通过CPU的数学与逻辑单元运算处理后,产生或者存储成有用的信息。 计算机…

    2018-05-10
  • liunx 笔记

    服务器硬件—CPU      服务器CPU公司   :Inter    xeon  至 强  ltanium   安腾      AMD A lthlon  MP   IBM  power 这几种。 服务器CPU分主频、外頻、倍频三个频率。CPU类型 :x86   x64 (clsc)  ARM  m6l8000 ,m68k power  pow…

    Linux笔记 2018-04-01
  • N31-7

    系统启动及安装

    Linux笔记 2018-08-05
  • 第三周作业

    1 列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户名登陆多次,则只显示一次。
    2 取出最后登陆到当前系统的用户的相关信息。
    3 取出当前系统上被用户当作其默认shell的最多的那个shell.
    4 将/etc/passwd中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。
    5 取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。
    6 列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字装换为大写后保存至/tmp/etc.conf文件中。
    7 显示/var目录下一级子目录或文件的总个数。
    8 取出/etc/group文件中第三个字符段数值最小的10个组的名字。
    9 将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。
    10. 请总结描述用户和组管理类命令的使用方法并完成以下练习:
    (1)创建组distro, 其GID为2016
    (2)创建用户mandriva, 其ID号为1005,基本组为distro
    (3)创建用户mageia, 其ID号为1100,家目录为/home/linux
    (4)给用户mageia添加密码,密码为mageedu
    (5)删除mandriva, 但保留其家目录
    (6)创建用户slackware, 其ID号为2002, 基本组为distro, 附加组为peguin
    (7)修改slackware的默认shell为/bin/tcsh
    (8)为用户slackware的新增附加组admins

    2018-06-05