如何制作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)
JllbcJllbc
上一篇 2018-05-10 13:41
下一篇 2018-05-10 14:29

相关推荐

  • N31-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]#cp -r /etc/skel /home/tuser1 [root@localhost ~]#chmod -R go= /home/tuser1 2、编辑/etc/group文件,添加…

    2018-07-20
  • d1-d2 命令总结

    1.bc 计算器 [root@centos7 ~]# bc bc 1.06.95 Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For det…

    Linux笔记 2018-07-19
  • linux基础2

    1.文件管理常用命令: <1>mkdir,rmdir mkdir:make directory mkdir [OPTION]… DIRECTORY… -p:自动按需创建父目录; -v:verbose,显示详细过程; -m MODE;直接给定权限; 注意:路径基名方为命令的作用对象;基名之前的路径必须存在; rmdir:re…

    Linux笔记 2018-07-01
  • TCP/IP

    TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。 TCP/IP分层: 这里有几个需要注意的知识点: 互联网地址:也就是IP地址,一般为网络号+子网号+主机号 域名系统:通俗的来说,就是一个数据库,可以将主机名转换成IP地址 RFC:TCP/IP协议的标准文档 端口号:一个逻辑号码,IP包所带有的标记 Socket:…

    Linux笔记 2018-05-05
  • 本地和网络yum创建

    本地源配置: 1 首先挂在光盘或镜像到虚拟机相关目录2 创建/etc/repos.d/xxx.d(在这之前先备份好原有的配置文件为xxx.d.bak,文件的配置如下图)3 清理旧yum仓库,生成新yum仓库信息缓存并查看 网络源配置: 1 下载新的CentOS-Base.repo 到/etc/yum.repos.d/ wget -O /etc/yum.rep…

    2018-04-08
  • linux基础

    linux基础命令

    2018-04-08