事先准备工作:源码安装apache 。安装目录为/usr/local/httpd

任务需求:

1、可通过 service httpd start|stop|status|restart 命令对服务进行控制

2、httpd服务可开机自启动

思路:

1、start、stop操作可直接调用源码安装的httpd的控制程序apachectl

2、在启动服务时,建立httpd.lock文件;停止服务时删除

3、status操作检测httpd.lock文件是否存在,存在判断服务已启动,不存在表示服务停止

4、对每个操作建立对应的函数,进行调用

5、restart操作先调用stop函数,在调用start函数

6、服务脚本的控制参数通过位置变量 $1 传入,使用case分支进行识别、执行相应的操作

7、在脚本开头添加chkconfig管理参数,定义哪个运行级别启动、服务启动优先级、服务关闭优先级(让服务开机自启动,必须添加),description服务描述,进程名

PS:看过系统已有系统服务脚本,发现那些比我写的复杂多了。原谅我刚学shell,第一次写系统服务脚本

脚本如下:

#vim /etc/init.d/httpd

#!bin/bash

#chkconfig:2345 55 25    //运行级别、启动优先级、关闭优先级

#processname:httpd        //进程名

#description:source httpd server daemon  //服务描述

prog=/usr/local/httpd/bin/apachectl      //控制程序路径

lock=/usr/local/httpd/httpd.lock        //lock文件路径

start(){                                //start函数

$prog start

echo "正在启动服务...."

touch $lock

}

stop(){                                //stop函数

$prog stop

echo "正在停止服务...."

rm -rf $lock

}

status(){                        //status函数

if [ -e $lock ];then

echo "$0 服务正在运行"

else

echo "$0 服务已经停止"

fi

}

restart(){              //restart函数

stop

start          //直接调用stop、start函数,

}

case "$1" in        //case分支结构匹配,$1位置参数对控制参数调用

"start")

start      //调用start函数

;;

"stop")            //调用stop函数

stop

;;

"status")            //调用status函数

status

;;

"restart")            //调用restart函数

restart

;;

*)                //其他参数就输出脚本正确用法

echo "用法:$0 start|stop|status|restart"

;;

esac

验证:

[root@ndbA /]# service httpd start

正在启动服务....

[root@ndbA /]# service httpd status

/etc/init.d/httpd 服务正在运行

[root@ndbA /]# service httpd stop

正在停止服务....

[root@ndbA /]# service httpd status

/etc/init.d/httpd 服务已经停止

[root@ndbA /]# service httpd stop

httpd (no pid file) not running

正在停止服务....

[root@ndbA /]# service httpd restatus

用法:/etc/init.d/httpd start|stop|status|restart

[root@ndbA /]# service httpd restart

httpd (no pid file) not running

正在停止服务....

正在启动服务....

[root@ndbA /]#

[root@ndbA /]# chkconfig --list httpd

httpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@ndbA /]# chkconfig  httpd off

[root@ndbA /]# chkconfig --list httpd

httpd          0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭

[root@ndbA /]# chkconfig  httpd on

[root@ndbA /]# chkconfig --list httpd

httpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭

[root@ndbA /]#

linux 编写系统服务,Linux shell编写系统服务脚本相关推荐

  1. Linux中shell语法和脚本编写

    Linux中shell语法和脚本编写 原文地址:学习shell的语法,及脚本编写 其它相关辅助资料: 编写shell脚本所需的语法和示例 基础linux指令&简单的shell语法和脚本编写 什 ...

  2. 在linux中编写shell脚本文件,如何编写简单的Shell脚本(Script)文件之Linux的基本操作...

    如何编写简单的Shell脚本(Script)文件之Linux的基本操作 新建一个文本文件包含所需要的脚本.举例,我会使用pico编辑器写一个脚本用来运行程序tar,带上必要的可选项可以用来解压从因特网 ...

  3. linux运维脚本编写,最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本...

    最强Linux自动化运维 Shell高级脚本编程实战 带习题+项目实战案例+全套配置脚本 大家可以通过参考下面的课程学习目录,就会发现单单只从目录上来分析就知道这是一部非常系统的Shell自动化脚本运 ...

  4. 编写可靠Linux shell脚本的建议

    编写可靠Linux shell脚本的八个建议https://yangxx.net/archives/949 1. 指定bash shell 脚本的第一行,#!之后应该是什么? 如果拿这个问题去问别人, ...

  5. linux端口扫描脚本ip段,Linux shell编写端口扫描脚本

    Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...

  6. Linux的shell编写

    -eq //等于 -ne //不等于 -gt //大于 -lt //小于 ge //大于等于 le //小于等于 实验中遇到的问题: 1.NAME=user1 中间不能有空格 2.[ xxx ] xx ...

  7. 用C语言编写一个Linux下的简单shell程序

    这是一个简单的C程序,展示了如何进行系统调用执行logout cd ls pwd pid rm mkdir mv cp等命令,这是一个简单的命令解释程序shell,其源代码如下: #include & ...

  8. Linux使用Shell编写电子词典

    使用Shell编写电子词典 代码块 代码块 字典是可以从网上找上传至linux或者直接使用网上词典: #!/bin/bash # #********************************** ...

  9. 体会Linux与生俱来的美 高级篇 编写自己的Shell解释器(全文)

    http://www.csdn.net/subject/linux/shell.mht 编写自己的Shell解释器 摘要:本期的目的是向大家介绍shell的概念和基本原理,并且在此基础上动手做一个简单 ...

  10. 刘启成_编写并使用shell脚本

    编写并使用shell脚本 实验环境: 为了集中查看linux服务器各方面的运行情况,管理员(root)希望定制自己的登录环境,以便自动显示监控信息.另外,通过编写简单的shell脚本,熟悉linux自 ...

最新文章

  1. 进化深度神经网络是推动技术发展的强劲动力
  2. Notepad++ 列编辑操作实例二则
  3. bangbang控制c语言代码大全,算法2-3~2-6:Big Bang-题解(C语言代码)
  4. Sublime Text 3 配置浏览器预览路径 localhost
  5. Java 进阶 ——2019 计划要读的书
  6. date 显示或设置系统时间和日期
  7. python 获取文件列表_Python3 - 获取文件夹中的文件列表
  8. 业务自助分析怎么推?中梁集团办的这场BI建模大赛值得借鉴
  9. 10 mins 搞懂“倒排索引”
  10. mysql索引linke和等于_MySQL索引怎么用?秒懂只需四个点!
  11. LeetCode 647 回文子串
  12. mysql innodb 浅读
  13. Microsoft Office 2010组件介绍
  14. jasperReports导出PDF字体加粗等样式失效问题
  15. Android系统epub阅读器分享
  16. 微信小程序总结(阶段第一次总结)
  17. linux终端软件mobaxterm,连接centos
  18. 使用api制作我的足迹地图
  19. 【DFS】【剪枝】数独(简单版)
  20. PacBio HiFi测序介绍及百迈客最新下机数据公布

热门文章

  1. 水星记(Mercury Records)
  2. html中全选按钮代码怎么写,html中的javascript 全选/取消全选操作示例代码
  3. 自定义 coding.net 静态网站域名
  4. JGG:青岛大学苏晓泉团队利用条件致病菌指数评估环境微生物风险
  5. EST:西湖大学鞠峰组-污水厂病原菌与土著反硝化细菌是多重抗生素耐药基因的活跃表达者...
  6. 叶际微生物定殖模型研究进展
  7. 脱口秀《娶妻当娶女博士》续集《娶妻别娶女博士》北大生物女博士的自白,爆笑加泪点...
  8. pandas使用query函数查询指定日期索引之间对应的dataframe数据行(select rows date index between a certain date interval)
  9. R语言使用gt包和gtExtras包漂亮地显示表格数据:gtExtras包的gt_hulk_col_numeric函数对单列、多列数据进行着色、使用不同的调色板(color palette)对列着色
  10. R语言ggplot2可视化在箱图上添加分组样本个数