首頁 > 運維 > linux運維 > 主體

Linux服務管理

巴扎黑
發布: 2017-06-23 13:50:39
原創
2083 人瀏覽過

本文目錄:

#11.1 服務的概念

11.2 管理獨立守護程式

#11.3 管理服務的開機自啟動

#11.4 管理xinetd及相關瞬時守護程式

11.5 CentOS 7上管理服務



##CentOS 7和CentOS 6管理服務的方式完全不同。本文先說明CentOS 6上的管理方式,在最後列出CentOS 7上服務管理方式。


11.1 服務的概念

服務是向外提供服務的進程,一般來說都會放在後台,既然要持續不斷的提供外界隨時發來的服務請求,服務進程就需要常駐在記憶體中,且不應該和終端有關,否則終端退出服務程序就退出了。另外,要能夠接待外界的請求為外界提供服務,那麼就需要有個專屬這個服務的"服務視窗",這個服務視窗就是埠號,透過埠號就能找到服務的提供者。

提供服務的一端叫做服務端,向服務端請求服務的叫做客戶端。首先,服務端啟動服務進程,此時將開放對應的連接埠號碼;然後客戶端指定服務端IP位址和連接埠號碼向該服務端發起請求,服務端所在主機的核心接收到請求資料包,然後分析數據包發現請求的是某某端口號,內核知道該端口號是哪個應用程序監聽的端口,所以將請求報文發送給對應的應用程序,應用程序收到報文後,將和客戶端建立連接,並進行資料傳輸。
另外要注意的是,並非所有服務都總是提供端口號的,例如xinetd這個服務,只有在需要的時候才接管相應的端口,如rsync監聽端口為222時,那麼請求rsync時,xinetd在監聽過程中的連接埠號碼就是222。在不被請求的時候,xinetd是沒有連接埠號碼的。
 

在Linux中,服務分為獨立守護程式和超級守護程式。獨立守護程式是自行監聽在背景的,基本上所有的服務都是獨立守護程式類別的服務。超級守護程式專指xinetd這個服務,這個服務代為管理一些特殊的服務,這類服務在被請求的時候才會由xinetd通知它啟動服務,服務提供完畢後就關閉服務,這類服務稱為瞬時守護進程,即只存在於瞬時。
但要明白,超級守護進程xinetd本身就是一個常駐記憶體的獨立守護進程,因為它要監聽來自外界對其管理的瞬時守護進程的請求。只不過一般不運作的時候,xinetd不佔用連接埠號碼,在工作的時候它佔用被要求的瞬時守護程式的連接埠號,並且處於監聽狀態。

11.2 管理獨立守護程式

在CentOS 6上,所有的服務腳本都在/etc/rc.d/init.d/目錄下,/etc/init.d/是它的軟連結。此目錄下的腳本都是LSB風格的腳本,它們基本上都能接受start/stop/restart/reload/status等參數。

[root@xuexi tmp]# ls /etc/init.d
abrt-ccpp         cpuspeed   irqbalance    messagebus  psacct       saslauthd
abrtd             crond      kdump         netconsole  quota_nld    single
abrt-oops         functions  killall       netfs       rdisc        smartd
acpid             haldaemon  lvm2-lvmetad  network     restorecond  sshd
atd               halt       lvm2-monitor  ntpd        rngd         svnserve
auditd            ip6tables  mcelogd       ntpdate     rsyslog      sysstat
blk-availability  iptables   mdmonitor     postfix     sandbox      udev-post
登入後複製

要管理獨立守護程式類別的服務

/etc/init.d/service_name   restart|start|stop|status    # 方法一
service  service_name    restart|start|stop|status    # 方法二
登入後複製

要讓服務能夠被service指令管理,將其服務腳本放在/etc/init.d目錄下即可。
#########11.3 管理服務的開機自啟動######chkconfig指令能管理/etc/init.d/目錄下存在且腳本的內容滿足一定條件的服務。 ######要能讓chkconfig管理服務的開機是否自啟動行為,只要將腳本放在/etc/init.d目錄下,然後在腳本的前部加上chkconfig行和description行。如:######
#!/bin/bash

# chkconfig: - 85 15# description: The Apache HTTP Server is an efficient and extensible
登入後複製
######這兩行必須在所有非註解行的前面,且這兩行必須得被"註解"。其中chkconfig行"-"表示適用於運作等級123456上,85表示開機啟動時,它的啟動順序為85,15表示關機停止服務時,它的停止順序為15。 description行隨便給一點描述資訊就可以,但必須得給"description:"關鍵字。 ######然後,就可以有chkconfig來管理服務的開機自啟動了。 ######
chkconfig [--add | --del] <name>  # 将/etc/init.d中可以被chkconfig管理的服务添加到chkconfig的管理列表中,或者从列表中删除
chkconfig [--list] [name]         # 列出指定名称的服务的开启自启动信息。name可以使用all来表示列出所有chkconfig管理列表中的服务
chkconfig [--level <levels>] <name> <on|off|reset>  # 将指定名称的服务在指定级别上打开开机自启动或关闭开机自启动功能。
                                                    # reset则表示重置为脚本中指定的级别
登入後複製
###

当然,除了chkconfig可以管理开机自启动,将启动命令放在/etc/rc.d/rc.local文件中也是可以的。


11.4 管理xinetd及相关瞬时守护进程

11.4.1 管理瞬时守护进程

该类服务不能直接使用service命令来启动。只能去/etc/xinetd.d/目录下的对应文件中进行设置(当然,也可以在/etc/xinetd.conf中配置),然后由xinetd进行管理。

首先安装xinetd程序。

[root@xuexi tmp]# yum -y install xinetd

[root@xuexi tmp]# chkconfig --list
......省略
xinetd          0:off   1:off   2:off   3:on    4:on    5:on    6:off

xinetd based services:
        chargen-dgram:  off
        chargen-stream: off
        daytime-dgram:  off
        daytime-stream: off
        discard-dgram:  off
        discard-stream: offecho-dgram:     offecho-stream:    off
        rsync:          off
        tcpmux-server:  offtime-dgram:     offtime-stream:    off
登入後複製

首先得保证xinetd是已经工作在后台的。

service xinetd start
登入後複製

然后管理瞬时守护进程,该类服务比较特别,其自启动状态和服务运行状态是同步的,也就是说chkconfig设置了其自启动则表示启动该服务,否则为停止该服务。另外,对其指定级别是无效的,它们的启动级别继承与xinetd的启动级别,并且xinetd会接管其触发的瞬时守护进程的端口号。

例如启动rsync这个瞬时守护进程。

chkconfig rsync on
登入後複製

11.4.2 瞬时守护进程的配置

瞬时守护进程受两个配置文件控制,一个是xinetd的配置文件/etc/xinetd.conf提供默认配置,一个是/etc/xinetd.d/下的配置文件针对对应的服务提供配置。

例如配置rsync,以下是/etc/xinetd.d/rsync的默认配置。

[root@xuexi tmp]# vi /etc/xinetd.d/rsync
# default: off      
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync        # 定义rsync服务,名称要和/etc/xinetd.d/下的文件同名
{
        disable         = yes      # yes表示不启动,no表示启动,等价于chkconfig rsync {on|off},所以这里设置后将直接在chkconfig中生效
        flags           = IPv6     # 不用管
        socket_type     = stream   # 这代表的是tcp类型的套接字wait            = no       # 该服务是单线程还是多线程的,表现形式是超出的请求是否进行等待,no表示多线程
        user            = root     # 以什么身份运行rsync
        server          = /usr/bin/rsync # 服务程序
        server_args     = --daemon # 服务程序启动时传递的参数
        log_on_failure  += USERID  # 连接失败的日志记录,+表示在全局对应的条目上新增此处指定的USERID
}
登入後複製

除此之外,还有几个选项:

【访问控制选项】以下两个控制列表中最好不要出现冲突的地址。
only_from:定义允许连接的访问控制列表,支持单IP,CIDR格式和长mask格式的网段,主机名hostname,域DOMAIN(.abc.com)
no_access:定义不允许访问的列表,语法格式同only_from

【监听地址】
bind       = ip_addr
interface  = ip_addr  # 等价于bind

【资源控制】
cps=args1 args2
instances=N
per_source=N
登入後複製

这3个选项的意义如下图。


11.5 CentOS 7上管理服务

service name start    ==> systemctl start name.service

service name stop    ==> systemctl stop name.service

service name restart ==> systemctl restart name.service

service name status  ==> systemctl status name.service

 

查看服务是否激活(在运行中):systemctl is-active name.service

查看所有已经激活                 :systemctl list-units --type service

查看所有服务                        :systemctl list-units --type service --all

 

设置开机自启动:chkconfig name on ==> systemctl enable name.service

禁止开机自启动:chkconfig name off ==> systemctl disable name.service

查看服务是否开机自启动:chkconfig --list name ==> is-enabled name.service

查看所有服务的开机自启动状态:chkconfig --list ==> systemctl list-unit-files --type service

 

回到系列文章大纲:

转载请注明出处:

以上是Linux服務管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板