我们在日常使用Linux的过程中经常会用到service XXX start/stop/restart等命令对相关系统服务进行控制。(CentOS在版本7之前,CentOS7以及最新版Ubunt都是用systemctl来对系统服务进行管理,当然原来的还是可以用的=。=)

看到公司的产品也是使用service开关系统服务的,查阅了相关资料,特在此总结一下。

part1 守护进程daemon

  翻开任意一本介绍Unix/Linux的书几乎都能找到守护进程相关内容(我是从APUE才真正认识到daemon的),用比较直观的说法来介绍daemon进程就是在后台运行,不受用户终端控制,而且启动后始终在默默运行的服务。

  用百度百科上的一段话来讲就是:

守护进程是一个在后台运行并且不受任何终端控制的进程。Unix操作系统有很多典型的守护进程(其数目根据需要或20—50不等),它们在后台运行,执行不同的管理任务。
用户使守护进程独立于所有终端是因为,在守护进程从一个终端启动的情况下,这同一个终端可能被其他的用户使用。例如,用户从一个终端启动守护进程后退出,然后另外一个人也登录到这个终端。用户不希望后者在使用该终端的过程中,接收到守护进程的任何错误信息。同样,由终端键人的任何信号(例如中断信号)也不应该影响先前在该终端启动的任何守护进程的运行。虽然让服务器后台运行很容易(只要shell命令行以&结尾即可),但用户还应该做些工作,让程序本身能够自动进入后台,且不依赖于任何终端。
守护进程没有控制终端,因此当某些情况发生时,不管是一般的报告性信息,还是需由管理员处理的紧急信息,都需要以某种方式输出。Syslog 函数就是输出这些信息的标准方法,它把信息发送给 syslogd 守护进程。

  

在这里我们需要知道的是我们所需要创建的听起来高大上的“服务”其本质就是一个守护进程,只不过注册为系统服务后该守护进程将会纳入整个系统的总体规划,它将享受自动开机启动,更简单的控制命令等好处,不过也就仅此而已,说到底它还是一个进程,一个守护进程。

part2 rc.d (runlevel control directory)运行等级控制目录

  在Linux的/etc/下存在一个非常重要的文件夹rc.d,这个文件夹下有init.d这个重要的文件夹。/etc/下还有rcn.d(n=0-6)这几个文件夹(软连接到/etc/rc.d/rcn.d)。

  目录里面都是一些可执行文件,而且这些文件都是些文本文件,可以用vi打开。

  启动脚本都被放在/etc/rc.d/init.d。这些脚本被ln 命令来连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)

  例如/etc/rc.d/rc2.d 下面的S10network 就是连接到/etc/rc.d/init.d下的network 脚本的。

  不同的运行等级意义如下所示:

    等级0表示:表示关机 
    等级1表示:单用户模式 
    等级2表示:无网络连接的多用户命令行模式 
    等级3表示:有网络连接的多用户命令行模式 
    等级4表示:不可用 
    等级5表示:带图形界面的多用户模式 
    等级6表示:重新启动

  系统从不同运行等级启动时就会找到相应文件夹rc.d/rcn.d中找到开始服务的脚本(以S开头,数字表示优先级)并启动,同理关机时同样使用K开头的软连接关闭服务。

part3 service&chkconfig

  service这个命令我们使用的比较多,也知道是对系统服务进行控制,而chkconfig就是控制service所管理服务的一个命令。

  首先来看看/etc/init.d/文件夹下一个典型的脚本文件样式:

#!/bin/bash
# chkconfig: - 90 10
# description: test service
# Source function library.
. /etc/rc.d/init.d/functions  # Source networking configuration.
. /etc/sysconfig/network  RETVAL=0  # 调用service xxxd start时执行的逻辑,一般这里就调用我们的程序的启动脚本,带些必要的参数等,以启动我们的进程,然后将pid写到相应的文件中
start() {  echo "started"
}  #执行service xxxd stop时执行的逻辑,一般这里我们就找到相应的pid文件,然后kill掉相应的进程即可
stop() {  echo "stopped"
}  # See how we were called.
case "$1" in  start)  start  ;;  stop)  stop  ;;  restart|reload)  stop  start  RETVAL=$?  ;;  condrestart|try-restart|force-reload)  if [ -f /var/lock/subsys/$prog ]; then  stop  start  RETVAL=$?  fi  ;;  status)  echo "status"  RETVAL=1  ;;  *)  echo $"Usage: $0 {start|stop|restart|try-restart|force-reload|status}"  exit 1
esac  exit $RETVAL  

  里面有不少start/stop/restart相关单词。就算是不懂bash脚本语法应该也能猜到它的用处:负责控制服务的开启与关闭,以及查看服务状态。

当使用service XXXX start/stop等命令的时候其实就是这个脚本在产生作用!

  而创建一个系统服务的关键也就是编写一个这样的脚本(当然得先有一个daemon程序,不过这个并不是本文主题:))而对于这个脚本照样画葫芦好像也不难。

  创建完成之后我们就可以用chkconfig来注册这个service了:

  1.顺序执行以下命令

  2.现在就可以用

  等命令管理服务

  3.chkconfig常用法:

参考:https://blog.csdn.net/lanyang123456/article/details/54695567

   https://blog.csdn.net/a1282379904/article/details/77894102

   https://zhidao.baidu.com/question/140070601.html

转载于:https://www.cnblogs.com/J1ac/p/9316888.html

Linux系统服务及其创建详解(service/chkconfig)相关推荐

  1. linux网络服务详解,Linux网络服务器配置基础详解 (3)

    Linux网络服务器配置基础详解 (3) Linux网络服务器配置基础详解 (3) 第三步:编辑"inetd.conf"文件(vi /etc/inetd.conf),禁止所有不需要 ...

  2. linux开机启动服务详解

    http://blog.163.com/sjt_linux/blog/static/19931031920126295452884/ linux开机启动服务详解(转) 2012-07-29 17:45 ...

  3. linux upstart脚本,Linux upstart启动方式详解

    Ubuntu从6.10开始逐步用Upstart()代替原来的SysVinit进行服务进程的管理.RHEL(CentOS)也都从版本6开始转用Upstart代替以往的init.d/rcX.d的线性启动方 ...

  4. Linux crontab 定时任务命令详解

    Linux Crontab 定时任务 命令详解 [日期:2016-02-13] 来源:Linux社区 在工作中需要数据库在每天零点自动备份所以需要建立一个定时任务.我选择在Linux下使用Cronta ...

  5. linux系统设置服务开机启动3种方法,Linux开机启动程序详解

    linux系统设置服务开机启动 方法1:.利用ntsysv伪图形进行设置,利用root登陆 终端命令下输入ntsysv 回车:如下图 方法2:利用命令行chkconfig命令进行设置 简要说明一下ch ...

  6. 【Linux】Supervisor使用详解

    [Linux]Supervisor使用详解 一.supervisor简介 ​ Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程 ...

  7. Kali linux无线网络渗透详解笔记

    Kali linux无线网络渗透详解笔记 第一章:搭建渗透环境测试环境 第二章:WiFi网络的构成 第三章:监听WiFi网络 第四章:捕获数据包 第五章: 分析数据包 第六章:获取信息 第七章:WPS ...

  8. linux远程date命令,linux之date命令详解

    date命令的用处 1.用于显示特殊的时间格式,可以用于对日志文件的命名 2.用于设置时间 ,不过这方面用的比较少,因为一般的服务器都设置的有自动同步网络时间 用法: date [OPTION]... ...

  9. WinXP SP2 系统服务优化设置详解

    WindowsXP Professional SP2的系统服务优化设置详解 01.显示名称:Alerter ◎进程名称:svchost.exe -k LocalService ◎微软描述:通知所选用户 ...

最新文章

  1. 多核处理器集成了神经处理单元
  2. 百度“知识增强的跨模态语义理解技术”获国家技术发明奖
  3. geoserver css插件,GeoServer使用CSS定义地图样式-上手
  4. FreeRTOS 中断优先级嵌套错误引发HardFault异常解决
  5. Android复习02(ListView具体操作[很详细]、简单音乐播放器)
  6. 乐在其中设计模式(C#) - 原型模式(Prototype Pattern)
  7. 【机器学习-西瓜书】六、支持向量机(SVM):最大间隔;对偶问题;KKT条件
  8. 博客园期刊制作组工作安排
  9. 面向对象的三个基本特征_杂谈:JavaScript面向对象
  10. kafka集群搭建(三台服务器)
  11. 8000 sentences of oral English(four)
  12. layui 卡片式列表_UITableViewCell系列之(三)卡片式列表
  13. 自动化测试运行脚本(python)
  14. 我跑了香港六家银行,把境外开户的事整明白了
  15. Apple Watch如何重新配对
  16. 如何在忘记linux密码的情况下修改密码
  17. 学习 C 语言看这一篇就够了!吐血整理 C 语言所有知识点
  18. ALIENTEK TFTLCD显示大字例程(ASCII 38*38,,46*46, 60*60).包含取模软件,字库,函数
  19. 吴恩达:按照这5步,传统公司也可转型人工智能\n
  20. opensuse的一些软件使用

热门文章

  1. Zabbix 监控Nginx连接的状态
  2. Spring注解和XML配置文件孰优孰劣
  3. __init和__initdata
  4. 实现点击打卡_打卡APP哪家强?快来看!这里有一款超好用的轻量级免费的习惯养成APP!...
  5. java定时器只执行一次_搞定Java并发:为什么说只有1种实现线程的方法?(下)...
  6. Python接口自动化-requests模块之post请求
  7. 访问远程Visdom
  8. spring容器的懒加载
  9. SAP License:如何获取采购订单一次性供应商的地址信息
  10. SAP License:转一篇初学者必看的文章