系统服务管理

小知识:服务是指操作系统中提供指定功能的程序或进程。服务也是一种应用程序,不同的是服务一般只在后台运行,且服务的对象一般是本地系统或网络中的主机和用户。

一、查看系统服务

Linux系统中存在许多服务,按服务对象不同,通常可以分为本地系统服务和网络服务两类。本地系统服务主要用于支撑本地系统运行,例如打印、网络支持、防火墙服务、蓝牙支持服务等。网络服务通常用于对网络中的用户或主机提供服务,例如Web应用服务、代理服务、FTP、数据库服务等。

无论何种服务,在Linux系统中都可以设置为在一个或多个特定的运行级别中自动启动,即当系统进入某个指定的运行级别时,会自动运行设置在该级别中的服务。管理这些服务的第1步是查看系统中的服务。

查看Linux系统中的服务列表,可以使用命令chkconfig。该命令可以用于查看服务的自启动状态,也可用于设置服务的启动状态。

【命令格式】

chkconfig –list [name]

【用法示例】

chkconfig命令可以查看单一服务的自启动状态,也可以用于查询系统中的服务列表。

(1)查询系统防火墙服务iptables的自启动状态:

[root@localhost home]# chkconfig --list iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

注意:使用选项list和服务名称查看服务时,必须使用服务的全名,否则无法查到结果。

(2)如果不使用服务名称参数,命令会列出系统中所有服务:

#独立服务的自启动状态
[root@localhost home]# chkconfig --list
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
NetworkManagerDispatcher        0:off   1:off   2:off   3:off   4:off   5:off   6:off
acpid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
apmd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
...

#以下为非独立服务的启动状态
xinetd based services:
        chargen-dgram:  off
        chargen-stream: off
        cvs:            off
        daytime-dgram:  off
        ...

说明:像上面命令中输出的那样,在每个运行级别中都可以设置自启动状态的服务称为独立服务。命令输出的最后几个服务是一些老式的服务集,现在已经很少有人使用这些服务。这些服务集的运行状态,依赖于一个名为xinetd的服务。通常将这些依赖于xinetd得到服务称为非独立服务。非独立服务受xinetd服务管理,因此如果要启动这些服务,首先应该启动xinetd。

(3)有时可能会忘记一些服务的具体名称,也可能只记得服务名称的一部分,这时可以将chkconfig命令与grep命令一起配合使用:

例如要查询服务名称中含有nfs的服务列表:

[root@localhost home]# chkconfig --list | grep nfs
nfs             0:off   1:off   2:off   3:off   4:off   5:off   6:off
nfslock         0:off   1:off   2:off   3:on    4:on    5:on    6:off

二、设置服务自启动状态

【命令格式】

chkconfig [--level <levels>] <name> <on|off>

在上面的命令格式中,尖括号<>中的内容表示必须使用的参数。如果使用了选项level,必须为参数指定运行级别列表,并且设置自启动状态必须指定服务名称和启动状态。

【用法示例】

使用命令chkconfig既可以设置独立服务的自启动状态,也可以设置非独立服务的自启动状态。

(1)设置独立服务系统防火墙的自启动状态为关闭:

[root@localhost home]# chkconfig iptables off
[root@localhost home]# chkconfig --list iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

(2)如果要设置开启防火墙:

[root@localhost home]# chkconfig iptables on
[root@localhost home]# chkconfig --list iptables
iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

这是防火墙将会在运行级别为2,3,4,5时自动启动。

(3)从(1)(2)中可以看出,设置服务为开启状态时,命令默认将其设置为运行级别2,3,4,5为开启。设置服务关闭时,默认设置为所以运行级别关闭。显然这个默认设置并不适用于所有用户和服务,这是可以使用选项level指定运行级别列表。

例如设置系统防火墙在运行级别3,5中自动启动:

[root@localhost home]# chkconfig --level 35 iptables on
[root@localhost home]# chkconfig --list iptables
iptables        0:off   1:off   2:off   3:on    4:off   5:on    6:off

(4)对于非独立服务而言,由于没有运行级别这个概念,因此不能使用level选项指定运行级别列表,可以直接设置这些服务的状态。

例如要将telnet服务设置为开机自启动:

[root@localhost home]# chkconfig telnet on
[root@localhost home]# chkconfig --list telnet
telnet          on

由于非独立服务受服务xinetd的管理,因此还应该将xinetd设置为自动启动:

[root@localhost home]# chkconfig --level 345 xinetd on
[root@localhost home]# chkconfig --list xinetd
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

注意:虽然可以使用chkconfig命令设置非独立服务的自启动状态,但这并不能让所有非独立服务启动。有些非独立服务可能还需要手动修改其配置文件,这样xinetd服务启动后才能启动这些非独立服务。

(5)Red Hat 的发行版中,通常还可以使用工具ntsysv设置服务的自启动状态。

三、添加、删除系统服务

chkconfig命令不仅可以查看、设置服务的自启动状态,还可以添加系统服务(前提条件是有可供使用的运行级别脚本,就像/etc/init.d/目录下的那些脚本)。

【命令格式】

chkconfig –add <name>

chkconfig –del  <name>

【用法示例】

要添加系统服务,首先需要将运行级别脚本拷贝到系统服务脚本目录/etc/init.d/中。

此处将以MySQL 5.1.55源码包中提供的运行级别脚本为例,演示如何添加、删除系统服务。

(1)MySQL 5.1.55编译安装完成后,可以复制源码目录中的support-files/mysql.server至系统服务脚本目录/etc/init.d,重命名为mysqld,并使用chmod为其添加可执行权限。完成此步骤后,chkconfig就能自动检测到新加入的运行级别脚本了。

(2)此时可以使用chkconfig命令将MySQL的运行级别脚本添加为系统服务:

# chkconfig --add mysqld

(3)从系统中移除MySQL后,还需要将其系统服务也一并移除,以免产生不必要的错误:

# chkconfig --del mysqld

如果确认再不需要使用服务的运行脚本,可以使用rm命令将其运行脚本删除。

注意:并不是所有发行版都支持chkconfig命令。

四、启动和关闭服务命令service

在系统运行状态时启动和关闭某个服务。

【命令格式】

service name [start|stop|restart]

有些服务也可以使用save(保存)和reload(重新载入配置文件)等动作。

【用法示例】

(1)例如要关闭系统防火墙iptables:

[root@localhost ~]# service iptables stop
#由于系统防火墙以模块的形式加载到系统中(不同于其他服务),因此关闭时,也卸载了相关模块
Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
[root@localhost ~]# service iptables status
Firewall is stopped.

(2)有时修改了服务的配置文件,希望以新的配置文件运行服务,这是可以使用restart参数让服务重新启动,以重新读取配置文件。

例如管理员通过修改配置文件的方法重新设置网络接口卡的IP地址等信息,并希望系统网络重新启动:

[root@localhost ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  
Determining IP information for eth0... done.
                                                           [  OK  ]

执行上面的命令后,系统会先关闭网络支持服务network,然后再读取配置文件,并用新的配置文件启动网络接口。

(3)然而有些发行版不支持service命令,由于服务的启动脚本都放在目录/etc/init.d中,因此可以使用手动运行的方式执行启动脚本:

例如要启动系统计划任务服务crond:

[root@localhost ~]# /etc/init.d/crond start
Starting crond:                                            [  OK  ]

(4)许多服务除了启动、停止和重启之外,还有一些其他动作,如保存、重新载入配置文件等(并非所有服务都支持这些动作)。

例如要保存系统防火墙规则:

[root@localhost ~]# service iptables save
Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]
posted @ 2013-12-12 08:29  ITtecman  阅读(483)  评论(0编辑  收藏  举报