1. 服务的分类
Linux的服务分为两大类:
RPM包默认安装的服务
它又分为独立的服务和基于xinetd的服务。 Linux中绝大多数的服务都是独立的服务。
源码包安装的服务
2. 服务的启动与自启动
启动是指在当前系统中让服务运行,并提供功能。
自启动是指让服务在系统开机或重启后,随着系统的启动而自动启动服务。
3. 查看已安装的服务
3.1 查看rpm包安装的服务
chkconfig --list
查看所有RPM包安装的服务,以及服务在系统的7个运行级别中的自启动状态。
注意:chkconfig命令对源码包安装的服务无效,除非经过特殊处理。
[root@localhost sh]# chkconfig --list
auditd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
htcacheclean 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
httpd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
ip6tables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
iptables 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
kdump 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
mdmonitor 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
messagebus 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
netconsole 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
netfs 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭
network 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
ntpdate 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
postfix 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
rdisc 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
restorecond 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
rsyslog 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
saslauthd 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭
sshd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
udev-post 0:关闭 1:启用 2:启用 3:启用 4:启用 5:启用 6:关闭
注意:上面显示的只是服务的自启动状态,服务是否已经启动可通过查看进程的ps
命令来判断。
在linux系统中,有七个运行级别。
0 关机
1 单用户模式(命令行界面),类似于windows的安全模式,主要用于系统修复 (只会启动最基本的程序)
2 不完全的多用户模式(命令行界面),不含NFS服务,也没有网络
3 完全的多用户模式(命令行界面),是标准的字符界面
4 未分配,系统保留的一个运行级别
5 标准的图形界面
6 重启
通过 runlevel
命令,可查看系统当前的运行级别。
第一个数字表示上一次的运行级别,第二个数字表示当前的运行级别。
[root@localhost sh]# runlevel
N 3
3.2 查看源码包安装的服务
一般只能通过查看服务安装的位置(/usr/local)进行辨别。
3.3 rpm包安装的服务和源码包安装的服务的位置
- rpm包安装在系统默认的目录中。
- 源码包安装在用户指定的目录中,一般是在/usr/local下。
安装位置的不同导致了服务管理的方式不同。因此,通常情况下,service、chkconfig和ntsysv只对rpm包安装的服务起作用。
4. rpm包服务的管理
rpm包安装的默认位置主要有:
- /etc/init.d/:独立服务启动脚本的保存位置,同目录/etc/rc.d/init.d/(/etc/init.d/是/etc/rc.d/init.d/的软连接)。
- /etc/sysconfig/:初始化环境配置文件的保存位置。
- /etc/:配置文件的保存位置。
- /etc/xinetd.conf:xinetd的配置文件。
- /etc/xinetd.d/:基于xinetd的服务启动脚本的保存位置。
- /var/lib/:服务产生的数据的保存位置。
- /var/log/:日志的保存位置。
rpm包安装的服务,有两种:
- 独立的服务(重点掌握)
- 基于xinetd的服务(目前很少见,了解即可)
4.1 独立服务的管理
独立服务的启动,有三种方法:
- /etc/init.d/服务名 start|stop|restart|status(推荐使用)
- /etc/rc.d/init.d/服务名 start|stop|restart|status
- service 服务名 start|stop|restart|status
说明:/etc/init.d是/etc/rc.d/init.d的软链接(相当于快捷方式)。
service命令来启动服务,其实也是从服务的绝对路径(/etc/rc.d/init.d)中找到该服务的启动脚本(红帽子系列的Linux才有service命令)。
注意:service命令对源码包安装的服务无效,除非经过特殊处理。
service --status-all
查看所有rpm包服务的运行状态。
独立服务的自启动,有三种方法:
chkconfig [–level 运行级别] [服务名] [on|off]
chkconfig httpd on 将Apache服务设置为开机自动启动。 也可以这样写 chkconfig --level 2345 httpd on
修改/etc/rc.d/rc.local文件或/etc/rc.local文件(推荐使用)
/etc/rc.local是/etc/rc.d/rc.local的软链接。 该文件会在系统开机后(登录之前)自动执行,故只需将服务的启动命令写入该文件即可。
使用ntsysv命令管理自启动
它可管理所有rpm包服务的自启动,*代表开机自启动,空代表手动启动。 它有一个图形界面,但却是红帽子系列专有的,默认也没安装。 ntsysv命令对源码包安装的服务无效,除非经过特殊处理。
4.2 基于xinetd服务的管理
安装xinetd与telnet
yum -y install xinetd
安装xinetd超级服务。
新版本的Linux中已经取消了xinetd的安装,而且基于xinetd的服务也越来越少。
yum -y install telnet-server
安装telnet-server服务器端。
telnet服务是基于xinetd的,但telnet服务(主要用作远程管理)不太安全。
目前,远程管理使用更加安全的ssh服务。
说明:了解一下即可,不推荐安装。
基于xinetd的服务的启动
基于xinetd的服务,不能直接启动,它是被超级服务xinetd所管理的。
示例:telnet的启动步骤
vi /etc/xinetd.d/telnet
编辑telnet启动脚本的内容,将disable的值由yes改为no。
service xinetd restart
重启超级服务xinetd。
基于xinetd服务的自启动,有两种方法:
- chkconfig 服务名 on
- 使用ntsysv命令管理自启动
说明:基于xinetd服务的启动和自启动没有严格的区分,它们是相通的。
5. 源码包服务的管理
5.1 源码包服务的启动
- 使用绝对路径,调用启动脚本来启动源码包安装的服务
不同的源码包的启动脚本不同,可通过查看源码包的安装说明,来明确掌握启动脚本的方法。
例如,源码包安装的apache2.2的启动方法:
/usr/local/apache2/bin/apachectl start|stop|restart|status
5.2 源码包服务的自启动
- 修改/etc/rc.d/rc.local文件或/etc/rc.local文件
例如,源码包安装的apache2.2的自启动方法:
vi /etc/rc.d/rc.local
修改该文件,在最后一行添加
/usr/local/apache2/bin/apachectl start
这行代码即可。
5.3 让源码包服务被服务管理命令管理
让源码包服务能被service命令管理的方法:
- 在/etc/init.d或/etc/rc.d/init.d中创建服务启动脚本的软链接
下面以源码包安装的apache2.2为例。
ln -s /usr/local/apache2/bin/apachectl /etc/init.d/apache
为apache的启动脚本创建一个软链接文件/etc/init.d/apache。
注意:保证软链接的文件名不能和/etc/init.d中现有的文件名相同。
之后,就可以用
service apache start|stop|restart|status
来管理该源码包安装的apache。
一般不推荐这么做。因为service命令本身是管理rpm包服务的,如果这么做了,初学者就会很困惑。
让源码包服务也能被chkconfig和ntsysv命令管理的方法:
- 修改上面创建的软链接文件,并将软链接文件名(不能包含路径)添加到chkconfig命令的管理列表。
下面以源码包安装的apache2.2为例。
vi /etc/init.d/apache
修改apache的启动脚本,添加下面两行代码。
# chkconfig: 2345 500 550
# description: source package apache
注意:添加的这两行代码前的#不能省略。
说明:chkconfig后面的三个数字,分别代表系统的运行级别、启动顺序、关闭顺序。必须保证启动顺序和关闭顺序都不能和系统中现有的服务相同。
chkconfig --add apache
将apache服务添加到chkconfig命令的管理列表。
之后,就可以用chkconfig和ntsysv命令管理源码包安装的apache。
识别系统中现有服务的启动顺序和关闭顺序的方法:
[root@localhost ~]# cd /etc/rc.d
[root@localhost rc.d]# ls -d rc[0-6].d
rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d
/etc/rc.d目录中的这些子文件夹(rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d)的名称中的数字分别代表系统的7个运行级别。
[root@localhost rc.d]# ls rc3.d
K10saslauthd K15httpd K75ntpdate K89rdisc S08iptables S11auditd S15mdmonitor S22messagebus S26udev-post S80postfix S99local
K15htcacheclean K50netconsole K87restorecond S08ip6tables S10network S12rsyslog S20kdump S25netfs S55sshd S90crond
以/etc/rc.d/rc3.d目录为例,里面的每个文件的文件名都有特殊的含义,代表了3运行级别时的启动顺序和关闭顺序。
第一个字母若为S,后面的数字就代表启动顺序;第一个字母若为K,后面的数字就代表关闭顺序;其余的字符代表服务的名称。