系统服务
Centos5
1、什么是daemon与服务(service)
1.1、daemon的主要分类
如果按照daemon的启动与管理方式来区分,基本上,可以将daemon分为可独立运行启动的stand alone,与通过一个super daemon来统一管理的服务这两个大类。
-
stand_alone:此daemon可以自行单独启动服务
这种类型的daemon可以自行启动而不必通过其他机制的管理;daemon启动并加载到内存后就一直占用内存与系统的资源。
最大的优点:因为是一直存在内存内持续的提供服务,因此对于发生客户端的请求时,shand alone的daemon响应速度较快。
常见的stand alone daemon有WWW的daemon(httpd)、**FTP的daemon(vsftpd)**等。
-
super_daemon:一个特殊的daemon来统一管理
这一种服务的启动方式则是通过一个统一的daemon类负责唤醒服务。这个特殊的daemon称为super deamon。Cenots6中的super deamon是xinetd。
特点是:当没有用户请求时,各项服务都是未启动状态,等到有来自客户端的请求时,super daemon才唤醒相对应的服务,当客户端的请求结束后,被唤醒的这个服务也会关闭并释放系统资源。
优点:1、由于super daemon负责唤醒各项服务,因此super daemon可以具有安全控制的机制,就是类似网络防火墙的功能;2、不会一直占用系统资源。
缺点:相应速度较慢
例如:telnet
deamon的命名规则:通常在服务的名称后加上一个d。
服务与端口的对应:/etc/services
1.2、daemon的启动脚本与启动方式
1、启动脚本和重要的配置文件
-
/etc/init.d/*
系统上几乎所有的服务启动脚本都放置在这里
-
/etc/sysconfig/*
几乎所有的服务都会将初始化的一些参数设置写入到这个目录下。
举例来说,网络的设置就写在**/etc/sysconfig/network**这个文件。
-
/etc/xinetd.conf,/etc/xinetd.d/*:super daemon配置文件
super daemon的主要配置文件为/etc/xinetd.conf
super daemon只是一个统一管理的机制,它管理的其他daemon的设置则写在/etc/xinetd.d/*里边
-
/etc/*:各服务各自的配置文件
-
/var/lib/*:各服务产生的数据库
举例来说,MySql的数据库默认就是写入/var/lib/mysql/这个目录下的
-
/var/run/*:各服务的程序的PID记录处
*2、stand alone的/etc/init.d/启动
几乎所有服务的启动脚本都在/etc/init.d/目录下,这里的脚本会去检测环境、查找配置文件、加载distribution提供的函数功能、判断环境是否可以运行此daemon等。
#什么参数也不加的时候,系统会告诉你可以用的参数有哪些
/etc/init.d/syslog {start|stop|status|restart|condrestart}
Centos提供了另外一个可以启动stand alone服务的脚本,那就是service这个进程。其实service是一个script,它可以分析你执行的service后面的参数,然后根据你的参数去/etc/init.d去取得正确地服务来start或stop。
service [service name] (start|stop|restart|...)
service --status-all
3、super daemon的启动方式
super daemon本身也是一个stand deamon的服务,自己的启动方式与stand deamon方式一样。但它所管理的deamon必须要在配置文件中设置为启动该daemon才行。配置文件就是/etc/xinetd.d/*的所有文件。
2、系统开启的服务
2.1、查看系统开启的服务
一般使用netstat来查看网络监听的服务
ps查看整个系统的服务
2.2、设置开机自启服务的方法
chkconfig:管理系统服务默认开机启动与否
chkconfig --list
chkconfig [--level [123456]] [服务名称] [on|off]
Centos7
1、systemd服务
1.1、systemd的配置文件放置目录
基本上,systemd将过去所谓的daemon执行脚本通通称为一个服务单位(unit),而每种服务单位依据功能来区分时,就分类为不同的类型(type)。基本的类型有包括系统服务、数据监听与交换的插槽档服务(socket)、存储系统状态的快照类型、**提供不同类似执行等级分类的操作环境(target)**等等。
/usr/lib/systemd/system/ #每个服务最主要的启动脚本设定,有点类似于以前的/etc/init.d底下的文件;
/run/systemd/system/ #系统执行过程中所产生的服务脚本,这些脚本优先级要比/usr/lib/systemd/system/高;
/etc/systemd/system/ #管理员依据主机系统的需求所建立的执行脚本,其实这个目录优点类似于以前的/etc/rc.d/rc5.d/Sxx, 执行优先级比/run/systemd/system/高!
到底系统开机会不会执行某些服务其实是看**/etc/systemd/system/底下的设定,所以该目录底下就是一大堆链接档**。而实际执行的systemd启动脚本配置文件,都是在/usr/lib/systemd/system/底下。/etc/systemd/system/仅仅是链接到正确地执行脚本配置文件而已。
1.2、systemd的unit类型分类说明
如何区分服务单元的类型?看扩展名。常见的服务类型如下:
扩展名 | 主要服务功能 |
---|---|
.service | 一般服务类型:主要是系统服务,包括服务器本身所需要的本地服务以及网络服务都是! |
.socket | 内部程序数据交换的插槽服务 |
.target | 执行环境类型:其实就是一群unit的集合 |
.mount .automount | 文件系统挂载相关服务 |
.path | 侦测特定文件或目录类型 |
.timer | 循环执行的服务 |
1.3、通过systemctl管理服务
1.3.1、通过systemctl管理单一服务(service unit)的启动/开机启动与观察状态
systemctl [command] [unit]
command主要有:
start :立刻启动后面的unit
stop :立刻关闭后面的unit
restart :立刻关闭后启动后面的unit
reload :不关闭后面的unit的情况下,重载配置文件,让设定生效
enable :开机自启
disable :取消开机自启
status :显示unit的状态
is-active :目前有没有正在运行
is-enable :开机时有没有预设要启动unit
systemctl status unit显示的服务的几个常见状态:
状态 | 说明 |
---|---|
active(running) | 正有一只或多只程序在执行 |
active(exited) | 仅执行一次就正常结束的服务,目前并没有任何程序在系统中执行 |
active(waiting) | 正在执行当中,不过还需要等待其他的事件才能继续执行 |
inactive | 目前这个服务没有运行 |
daemon的预设状态:
状态 | 说明 |
---|---|
enabled | 开机时被执行 |
disabled | 开机时不执行 |
static | 不可以自己启动 |
mask | 无法被启动!因为被强制注销了(并非删除),可通过systemctl unmask解除 |
1.3.2、通过systemctl观察系统上所有的服务
systemctl [command] [--type=TYPE] [--all]
command:
list-units :依据unit列出目前启动的unit。若加上--all才会列出没启动的
list-unit-files :依据/usr/lib/systemd/system内的文件,将所有文件列表说明