linux 系统服务管理
一. daemon与service学习总结
如下内容为centos6及以下的:
- daemon的意思是守护进程,service的意思是服务,要提供服务就需要有程序支持,只要有运行的程序就需要有程序的守护进程,那么daemon就是提供服务背后程序的守护进程。
- daemon在linux中可以分为两大类。第一大类为stand alone daemon,第二大类为super daemon。
- stand alone daemon是独立守护一个程序的进程,比如httpd、ftp。
- super daemon是守护了一堆程序的进程,比如rsync、Telnet等。
- 服务启动需要关注的基本文件和原理:
- /etc/init.d/* :启动脚本放置处
系统上几乎所有的服务启动脚本都放置在这里!事实上这是公认的目录,我们的 CentOS 实际上放置在 /etc/rc.d/init.d/ 啦! 不过还是有配置连结档到 /etc/init.d/ 的!既然这是公认的目录,因此建议您记忆这个目录即可! - /etc/sysconfig/* :各服务的初始化环境配置文件
几乎所有的服务都会将初始化的一些选项配置写入到这个目录下,举例来说,登录档的 syslog 这支 daemon 的初始化配置就写入在 /etc/sysconfig/syslog 这里呢!而网络的配置则写在 /etc/sysconfig/network 这个文件中。 所以,这个目录内的文件也是挺重要的; - /etc/xinetd.conf, /etc/xinetd.d/* :super daemon 配置文件
super daemon 的主要配置文件 (其实是默认值) 为 /etc/xinetd.conf ,不过我们上面就谈到了, super daemon 只是一个统一管理的机制,他所管理的其他 daemon 的配置则写在 /etc/xinetd.d/* 里头! - /etc/* :各服务各自的配置文件
大家的配置文件都是放置在 /etc/ 底下的! - /var/lib/* :各服务产生的数据库
一些会产生数据的服务都会将他的数据写入到 /var/lib/ 目录中。举例来说,数据库管理系统 MySQL 的数据库默认就是写入 /var/lib/mysql/ 这个目录下啦! - /var/run/* :各服务的程序之 PID 记录处
程序可以使用讯号 (signal) 来管理程序, 既然 daemon 是程序,所以当然也可以利用 kill 或 killall 来管理啦!不过为了担心管理时影响到其他的程序, 因此 daemon 通常会将自己的 PID 记录一份到 /var/run/ 当中!例如登录文件的 PID 就记录在 /var/run/syslogd.pid 这个文件中。如此一来, /etc/init.d/syslog 就能够简单的管理自己的程序。
- 服务通过端口提供,端口和服务的对应关系就记录在/etc/services。
-
/etc/init.d/* :启动脚本放置处 系统上几乎所有的服务启动脚本都放置在这里!事实上这是公认的目录,我们的 CentOS 实际上放置在 /etc/rc.d/init.d/ 啦! 不过还是有配置连结档到 /etc/init.d/ 的!既然这是公认的目录,因此建议您记忆这个目录即可! /etc/sysconfig/* :各服务的初始化环境配置文件 几乎所有的服务都会将初始化的一些选项配置写入到这个目录下,举例来说,登录档的 syslog 这支 daemon 的初始化配置就写入在 /etc/sysconfig/syslog 这里呢!而网络的配置则写在 /etc/sysconfig/network 这个文件中。 所以,这个目录内的文件也是挺重要的; /etc/xinetd.conf, /etc/xinetd.d/* :super daemon 配置文件 super daemon 的主要配置文件 (其实是默认值) 为 /etc/xinetd.conf ,不过我们上面就谈到了, super daemon 只是一个统一管理的机制,他所管理的其他 daemon 的配置则写在 /etc/xinetd.d/* 里头喔! /etc/* :各服务各自的配置文件 大家的配置文件都是放置在 /etc/ 底下的喔! /var/lib/* :各服务产生的数据库 一些会产生数据的服务都会将他的数据写入到 /var/lib/ 目录中。举例来说,数据库管理系统 MySQL 的数据库默认就是写入 /var/lib/mysql/ 这个目录下啦! /var/run/* :各服务的程序之 PID 记录处 可以使用讯号 (signal) 来管理程序, 既然 daemon 是程序,所以当然也可以利用 kill 或 killall 来管理啦!不过为了担心管理时影响到其他的程序, 因此 daemon 通常会将自己的 PID 记录一份到 /var/run/ 当中!例如登录文件的 PID 就记录在 /var/run/syslogd.pid 这个文件中。如此一来, /etc/init.d/syslog 就能够简单的管理自己的程序啰。
-
- stand alone daemon服务的启动方法(centos6以下):
-
-
第一种启动方式: [root@www ~]# /etc/init.d/syslog 用法: /etc/init.d/syslog {start|stop|status|restart|condrestart} # 什么参数都不加的时候,系统会告诉你可以用的参数有哪些,如上所示。 范例一:观察 syslog 这个 daemon 目前的状态 [root@www ~]# /etc/init.d/syslog status syslogd (pid 4264) 正在运行... klogd (pid 4267) 正在运行... # 代表 syslog 管理两个 daemon ,这两个 daemon 正在运行中啦! 范例二:重新让 syslog 读取一次配置文件 [root@www ~]# /etc/init.d/syslog restart 正在关闭核心记录器: [ 确定 ] 正在关闭系统记录器: [ 确定 ] 正在启动系统记录器: [ 确定 ] 正在启动核心记录器: [ 确定 ] [root@www ~]# /etc/init.d/syslog status syslogd (pid 4793) 正在运行... klogd (pid 4796) 正在运行... # 因为重新启动过,所以 PID 与第一次观察的值就不一样了!这样了解乎? 第二种启动方式: [root@www ~]# service [service name] (start|stop|restart|...) [root@www ~]# service --status-all 选项与参数: service name:亦即是需要启动的服务名称,需与 /etc/init.d/ 对应; start|... :亦即是该服务要进行的工作。 --status-all:将系统所有的 stand alone 的服务状态通通列出来 范例三:重新启动 crond 这支 daemon : [root@www ~]# service crond restart [root@www ~]# /etc/init.d/crond restart # 这两种方法随便你用哪一种来处理都可以!不过鸟哥比较喜欢使用 /etc/init.d/* 范例四:显示出目前系统上面所有服务的运行状态 [root@www ~]# service --status-all acpid (pid 4536) 正在运行... anacron 已停止 atd (pid 4694) 正在运行... ....(底下省略)....
-
- super daemon服务的启动方法(centos6以下):
-
[root@www ~]# grep -i 'disable' /etc/xinetd.d/* ....(前面省略).... /etc/xinetd.d/rsync: disable = yes /etc/xinetd.d/tcpmux-server: disable = yes /etc/xinetd.d/time-dgram: disable = yes /etc/xinetd.d/time-stream: disable = yes # 1. 先修改配置文件成为启动的模样: [root@www ~]# vim /etc/xinetd.d/rsync # 请将 disable 那一行改成如下的模样 (原本是 yes 改成 no 就对了) service rsync { disable = no ....(后面省略).... # 2. 重新启动 xinetd 这个服务 [root@www ~]# /etc/init.d/xinetd restart 正在停止 xinetd: [ 确定 ] 正在激活 xinetd: [ 确定 ] # 3. 观察启动的端口 [root@www ~]# grep 'rsync' /etc/services <==先看看端口是哪一号 rsync 873/tcp # rsync rsync 873/udp # rsync [root@www ~]# netstat -tnlp | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4925/xinetd # 注意看!启动的服务并非 rsync 喔!而是 xinetd ,因为他要控管 rsync 嘛!
-
二. 新旧版本命令对比
centos6 和 centos 7命令对比。