Gestion des services Linux

巴扎黑
Libérer: 2017-06-23 13:50:39
original
2115 Les gens l'ont consulté

Répertoire de cet article :

11.1 Concept de service

11.2 Gestion des démons indépendants

11.3 Gestion du démarrage automatique du service au démarrage

11.4 Gestion de xinetd et des démons transitoires associés

11.5 Services de gestion sur CentOS 7


CentOS 7 et CentOS 6 gèrent les services de manière complètement différente. Cet article explique d'abord les méthodes de gestion sur CentOS 6, et répertorie enfin les méthodes de gestion des services sur CentOS 7.


11.1 La notion de service

Le service est un processus qui fournit des services au monde extérieur De manière générale, il sera placé au second plan puisque. il doit continuer à fournir des services au monde extérieur à tout moment. Pour les demandes de service envoyées, le processus de service doit résider dans la mémoire et ne doit pas être lié au terminal. Sinon, le terminal quittera le programme de service à sa sortie. De plus, pour pouvoir recevoir des demandes externes et fournir des services au monde extérieur, vous devez disposer d'une « fenêtre de service » dédiée à ce service. Cette fenêtre de service est le numéro de port, et le fournisseur de services peut être trouvé via le port. nombre.

La fin qui fournit des services s'appelle le serveur, et celle qui demande des services au serveur s'appelle le client. Tout d'abord, le serveur démarre le processus de service et le numéro de port correspondant sera ouvert à ce moment-là, puis le client spécifie l'adresse IP du serveur et le numéro de port pour lancer une requête au serveur. Le noyau de l'hôte où se trouve le serveur. reçoit le paquet de requête, puis analyse les données. La requête de découverte de paquet concerne un certain numéro de port. Le noyau sait quelle application écoute le numéro de port, il envoie donc le message de requête à l'application correspondante une fois que l'application a reçu le message. , il établira une connexion avec le client et effectuera la transmission des données.

Il convient également de noter que tous les services ne fournissent pas toujours des numéros de port. Par exemple, le service xinetd ne prend en charge le port correspondant qu'en cas de besoin. Par exemple, lorsque le port d'écoute rsync est 222, demandez rsync At. cette fois, le numéro de port de xinetd pendant le processus d'écoute est 222. Lorsqu'il n'est pas demandé, xinetd n'a pas de numéro de port.

Sous Linux, les services sont divisés en démons indépendants et super-démons. Le processus démon indépendant se surveille en arrière-plan et, fondamentalement, tous les services sont des services de classe démon indépendants. Le super démon fait spécifiquement référence au service xinetd. Ce service gère certains services spéciaux en son nom, lorsque de tels services sont demandés, xinetd lui demandera de démarrer le service. Une fois le service fourni, ce type de service sera fermé. Le service est appelé transitoire. Les processus démons n'existent que temporairement.

Mais vous devez comprendre que le super démon xinetd lui-même est un processus démon indépendant résidant en mémoire, car il doit écouter les demandes du monde extérieur pour les processus démons transitoires qu'il gère. Cependant, lorsqu'il ne fonctionne pas, xinetd n'occupe pas le numéro de port. Lorsqu'il fonctionne, il occupe le numéro de port du démon transitoire demandé et est en état d'écoute.


11.2 Gestion des démons indépendants

Sur CentOS 6, tous les scripts de service sont dans le répertoire /etc/rc.d/init.d/ , /etc /init.d/ est son lien symbolique. Les scripts de ce répertoire sont tous des scripts de style LSB et acceptent essentiellement des paramètres tels que 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
Copier après la connexion

Pour gérer les services de classe démon indépendants

/etc/init.d/service_name   restart|start|stop|status    # 方法一
service  service_name    restart|start|stop|status    # 方法二
Copier après la connexion

Pour activer le service à gérer par la commande service, placez son script de service dans le répertoire /etc/init.d.


11.3 Le service de gestion démarre automatiquement au démarrage

La commande chkconfig peut gérer les scripts qui existent dans le répertoire /etc/init.d/ et le contenu du script remplit certaines conditions Servir.

Pour permettre à chkconfig de gérer si le service démarre automatiquement au démarrage, placez simplement le script dans le répertoire /etc/init.d, puis ajoutez la ligne chkconfig et la ligne de description devant le script. Par exemple :

#!/bin/bash

# chkconfig: - 85 15# description: The Apache HTTP Server is an efficient and extensible
Copier après la connexion

Ces deux lignes doivent être devant toutes les lignes non-commentaires, et ces deux lignes doivent être "commentées". Le "-" dans la ligne chkconfig indique qu'il est applicable au niveau d'exécution 123456, 85 indique que lorsque l'ordinateur est allumé, sa séquence de démarrage est 85 et 15 indique que lorsqu'il est arrêté et que le service est arrêté, son la séquence d’arrêt est 15. Vous pouvez simplement donner quelques informations de description dans la ligne de description, mais vous devez donner le mot-clé « description : ».

Ensuite, vous pouvez utiliser chkconfig pour gérer le démarrage automatique du service.

chkconfig [--add | --del] <name>  # 将/etc/init.d中可以被chkconfig管理的服务添加到chkconfig的管理列表中,或者从列表中删除
chkconfig [--list] [name]         # 列出指定名称的服务的开启自启动信息。name可以使用all来表示列出所有chkconfig管理列表中的服务
chkconfig [--level <levels>] <name> <on|off|reset>  # 将指定名称的服务在指定级别上打开开机自启动或关闭开机自启动功能。
                                                    # reset则表示重置为脚本中指定的级别
Copier après la connexion

当然,除了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
Copier après la connexion

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

service xinetd start
Copier après la connexion

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

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

chkconfig rsync on
Copier après la connexion

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
}
Copier après la connexion

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

【访问控制选项】以下两个控制列表中最好不要出现冲突的地址。
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
Copier après la connexion

这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

 

回到系列文章大纲:

转载请注明出处:

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal