在Linux操作系统中,对于服务的管理体系是沿用了System V的服务管理体系,System V原来是早期AT&T的一个操作系统。对于Linux系统,System V提供了运行级别的概念,System V一共提供了7种运行级别
1 单用户模式
2 不带网络的多用户模式
3 带网络的多用户模式,纯文本界面
4 未使用
5 带网络的多用户模式,图形界面
6 重启
System V定义了init为系统启动的第一个进程,进程PID=1,这个进程的目的就是去查看 /etc/inittab 中的系统启动级别从而来启动对应的服务。
对于不同的服务,因为其提供该服务的厂家不同,所以这些的服务的启动、关闭机制通常不同,在Linux系统中,为了方便的管理这些服务,每个服务的启动、结束、重启等操作都由一个System V脚本来进行控制,拥有固定的格式。
对于Linux系统上的服务,这些服务的System V脚本文件都是存放在 /etc/rc.d/init.d 这个目录下
[root@xiaoluo ~]# cd /etc/rc.d/init.d/
[root@xiaoluo init.d]# ls abrt-ccpp firstboot messagebus quota_nld snmptrapd abrtd functions mysqld rdisc spice-vdagentd abrt-oops haldaemon netconsole restorecond sshd acpid halt netfs rngd sssd atd htcacheclean network rpcbind sysstat auditd httpd NetworkManager rpcgssd udev-post autofs ip6tables nfs rpcidmapd vboxadd blk-availability iptables nfslock rpcsvcgssd vboxadd-service bluetooth irqbalance ntpd rsyslog vboxadd-x11 certmonger kdump ntpdate sandbox vncserver cpuspeed killall oddjobd saslauthd wdaemon crond lvm2-lvmetad portreserve single winbind cups lvm2-monitor postfix smartd wpa_supplicant dnsmasq mdmonitor psacct snmpd ypbind
命令 service 可以调用指定服务的System V脚本,并执行指定的动作
service 服务名 [start | stop | restart | status]
例如我们这里需要启动 httpd 这个服务,可以使用 service httpd start 这个命令
[root@xiaoluo init.d]# service httpd start Starting httpd: httpd: apr_sockaddr_info_get() failed for xiaoluo httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
我们也可以通过 service httpd status 来查看当前服务的启动情况
如果我们要重启该服务,或者关闭服务可以分别使用 service httpd restart 、service httpd stop命令
①第一个部分是第一个字母K或者S,表示该服务是不是开机自动启动,K表示开机不启动,S表示开机就启动
②第二个部分是一个数字,这个数字代表的是该服务的启动顺序,服务启动的顺序非常的重要,例如我们的网络服务需要在邮件服务之前启动
③第三个部分就是对应服务的名字,该链接文件其实都是指向的是 init.d 这个目录下的System V脚本文件
chkconfig 设置服务是否开机启动
chkconfig --list 查看所有服务的开机启动情况
chkconfig httpd on 服务开启自动启动
三、xinetd
在Linux系统中还有许多不常驻的一些服务,例如 telnet、rsync服务,这些服务则是通过 xinetd 这个服务来进行管理的。
xinetd 控制的就是那些不常驻的服务,功能较为简单的服务
xinetd其实自己本身就是作为一个系统的常驻的服务运行在后台,而xinetd所控制的服务在没有连接请求的时候是不运行的,所有xinetd控制的服务的连接请求都会提交给xinetd来进行代理
xinetd在收到一个请求后,会根据请求的协议及服务启动相应的服务进程,进程处理完后请求就会结束