您的位置:首页 > 运维架构 > Linux

【Linux 基础篇】之服务

2016-02-20 19:46 232 查看

服务的介绍

在开始介绍如何管理Linux的服务前,先为你介绍Linux的服务究竟有哪些。这些服务的分类方法,以及一些关于服务的基本概念

服务的种类

Linux提供了许多的服务。这些服务,可以使依照其功能和依照服务启动的方法与执行时的特性进行分类。

依照功能分类:

1.系统服务

— 某些服务的服务对象是Linux系统本身,或者Linux系统用户,这类的服务我们称为系统服务(System
Service)

2.网络服务

— 提供给网络中的其他客户端(Clients)调用使用的服务,这类的服务我们统称为网络服务(Networking
Service)

依照服务启动的方法分类

1.独立系统服务

— 服务一经启动,除非因为关闭系统或者管理者手动结束,否则都将在后台执行,不管有没有被用到。这样的服务我们称为独立系统服务(Standalone Service)。独立系统服务有时候又被称为Sys
V服务(Sys V Service)

2.临时服务

— 与独立系统服务不同,临时服务(Transient Service)平时并不会启动,而是当客户端需要时才会被启动,使用完毕会结束。

服务的管理

手动的启动或停止独立系统服务

为了简化Linux服务管理的麻烦,Linux特别为每一个独立式的服务,提供了一个服务启动程序文件(Service
Startup Script)。

所有的服务启动文件被储存在/etc/rc.d/init.d/目录下

如何利用脚本直接管理服务

/etc/rc.d/init.d/里面每一个文件就是某一个服务的启动程序文件,你可以直接执行某一个启动程序文件,借以来启动或者停止该服务

不同的服务启动文件可能会有不同的动作参数:

- start:启动这个服务

- stop:
停止这个服务

- restart:
先停止,再启动,也就是重新启动的意思。

- reload:
重载配置文件,这个参数只有在服务已经启动的状况下才
能使用。

- condrestart:有条件的重新启动,这个服务必须是已经启动的,才会被重新启动;如果这个服务尚未启动,则无须启动之。

- status:
查看目前服务的启动状态。



service命令管理方法

用法: service filename action

动作参数:

start

stop

restart

status



守护进程

xinetd是一个特殊的程序,不断监控所有通讯端口。一旦有客户端调用某一个启动文件时,这个程序就要负责启动该服务;而在客户端使用完毕后,该程序也必须要负责结束。

守护进程服务位置:/etc/xinetd.d

service xinetd start/stop/status

xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。

(1)xinetd的特色

1) 强大的存取控制功能

— 内置对恶意用户和善意用户的差别待遇设定。

— 使用libwrap支持,其效能更甚于tcpd。

— 可以限制连接的等级,基于主机的连接数和基于服务的连接数。

— 设置特定的连接时间。

— 将某个服务设置到特定的主机以提供服务。

2) 有效防止DoS攻击

— 可以限制连接的等级。

— 可以限制一个主机的最大连接数,从而防止某个主机独占某个服务。

— 可以限制日志文件的大小,防止磁盘空间被填满。

3) 强大的日志功能

— 可以为每一个服务就syslog设定日志等级。

— 如果不使用syslog,也可以为每个服务建立日志文件。

— 可以记录请求的起止时间以决定对方的访问时间。

— 可以记录试图非法访问的请求。

4) 转向功能

可以将客户端的请求转发到另一台主机去处理。

5) 支持IPv6

xinetd自xinetd 2.1.8.8pre*起的版本就支持IPv6,可以通过在./configure脚本中使用with-inet6 capability选项来完成。注意,要使这个生效,核心和网络必须支持IPv6。当然IPv4仍然被支持。

6) 与客户端的交互功能

无论客户端请求是否成功,xinetd都会有提示告知连接状态。

(2)xinetd的缺点

当前,它最大的缺点是对RPC支持的不稳定性,但是可以启动protmap,使它与xinetd共存来解决这个问题。

(3)使用xinetd启动守护进程

原则上任何系统服务都可以使用xinetd,然而最适合的应该是那些常用的网络服务,同时,这个服务的请求数目和频繁程度不会太高。像DNS和Apache就不适合采用这种方式,而像FTP、Telnet、SSH等就适合使用xinetd模式,系统默认使用xinetd的服务可以分为如下几类。

① 标准Internet服务:telnet、ftp。

② 信息服务:finger、netstat、systat。

③ 邮件服务:imap、imaps、pop2、pop3、pops。

④ RPC服务:rquotad、rstatd、rusersd、sprayd、walld。

⑤ BSD服务:comsat、exec、login、ntalk、shell、talk。

⑥ 内部服务:chargen、daytime、echo、servers、services、time。

⑦ 安全服务:irc。

⑧ 其他服务:name、tftp、uucp。

服务的自启动

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

使用语法:

chkconfig [--add][--del][--list][系统服务]
或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

参数用法:

--add  增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。

--del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。

--level<等级代号>
 指定读系统服务要在哪一个执行等级中开启或关毕。

等级0表示:表示关机

等级1表示:单用户模式

等级2表示:无网络连接的多用户命令行模式

等级3表示:有网络连接的多用户命令行模式

等级4表示:不可用

等级5表示:带图形界面的多用户模式

等级6表示:重新启动

需要说明的是,level选项可以指定要查看的运行级而不一定是当前运行级。对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

chkconfig --list [name]:显示所有运行级系统服务的运行状态信息(on或off)。如果指定了name,那么只显示指定的服务在不同运行级的状态。

chkconfig --add name:增加一项新的服务。chkconfig确保每个运行级有一项启动(S)或者杀死(K)入口。如有缺少,则会从缺省的init脚本自动建立。

chkconfig --del name:删除服务,并把相关符号连接从/etc/rc[0-6].d删除。

chkconfig [--level levels] name:设置某一服务在指定的运行级是被启动,停止还是重置。

使用范例:

chkconfig --list #列出所有的系统服务

chkconfig --add httpd #增加httpd服务

chkconfig --del httpd #删除httpd服务

chkconfig --list #列出系统所有的服务启动情况

chkconfig --list mysqld #列出mysqld服务设置情况

chkconfig --level 35 mysqld on #设定mysqld在等级3和5为开机运行服务,--level
35表示操作只在等级3和5执行,on表示启动,off表示关闭

chkconfig mysqld on #设定mysqld在各等级为on,“各等级”包括2、3、4、5等级



screen用法

screen被称之为一个全屏窗口管理器,用他可以轻松在一个物理终端上获得多个虚拟终端的效果。

screen功能说明:

简单来说,screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器,这意味着你能够使用一个单一的终端窗口运行多终端的应用。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

screen命令语法:

screen[-AmRvx -ls -wipe][-d < >][-h < >][-r < >][-s ][-S < >]

screen命令参数:

-A -[r|R] 将所有的视窗都调整为目前终端机的大小。

-c filename 用指定的filename文件替代screen的配置文件’.screenrc’.

-d [pid.tty.host] 断开screen进程(使用该命令时,screen的状态一定要是Attached,也就是说有用户连在screen里)。一般进程的名字是以pid.tty.host这种形式表示(用screen
-list命令可以看出状态)。

-D [pid.tty.host] 与-d命令实现一样的功能,区别就是如果执行成功,会踢掉原来在screen里的用户并让他logout。

-h < > 指定视窗的缓冲区行数。

-ls或–list 显示目前所有的screen作业。

-m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。

-p number or name 预先选择一个窗口。

-r [pid.tty.host] 恢复离线的screen进程,如果有多个断开的进程,需要指定[pid.tty.host]

-R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。

-sshell 指定建立新视窗时,所要执行的shell。

-S < > 指定screen作业的名称。(用来替代[pid.tty.host]的命名方式,可以简化操作).

-v 显示版本信息。

-wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。

-x 恢复之前离线的screen作业。

Screen命令的常规用法:

screen-d -r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户再连接。

screen-D -r:连接一个screen进程,如果该进程是attached,就先踢掉远端用户并让他logout再连接

screen-ls或者-list:显示存在的screen进程,常用命令

screen-m:如果在一个Screen进程里,用快捷键crtl+a
c或者直接打screen可以创建一个新窗口,screen -m可以新建一个screen进程。

screen-dm:新建一个screen,并默认是detached模式,也就是建好之后不会连上去。

screen-p number or name:预先选择一个窗口。

Screen实现后台运行程序的简单步骤:

1<要进行某项操作时,先使用命令创建一个Screen:

[linux@user~]$ screen -S test1

2<接着就可以在里面进行操作了,如果你的任务还没完成就要走开的话,使用命令保留Screen:

[linux@user~]$Ctrl+a+d #按Ctrl+a,然后再按d即可保留Screen

[detached] #这时会显示出这个提示,说明已经保留好Screen了

如果你工作完成的话,就直接输入:

[linux@user~]$exit #这样就表示成功退出了

[screen is terminating]

3<如果你上一次保留了Screen,可以使用命令查看:

[linux@user~]$ screen -ls

There is a screen on:

9649.test1 (Detached)

恢复Screen,使用命令:

[linux@user~]$ screen -r test1 (or 9649)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: