ホームページ  >  記事  >  運用・保守  >  Linuxサービス管理

Linuxサービス管理

巴扎黑
巴扎黑オリジナル
2017-06-23 13:50:392068ブラウズ

この記事のディレクトリ:

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 の場合、xinetd は、rsync が要求されたときに、対応するポートを引き継ぎます。リスニングプロセス中のポート番号は 222 です。要求されていない場合、xinetd にはポート番号がありません。

Linux では、サービスは独立したデーモンとスーパー デーモンに分かれています。独立したデーモン プロセスはバックグラウンドで自身を監視しており、基本的にすべてのサービスは独立したデーモン クラスのサービスです。スーパー デーモンは、具体的には 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

これらの 2 行はすべての非コメント行の前に置く必要があり、これらの 2 行は「コメント化」する必要があります。 chkconfig 行の「-」は実行レベル 123456 に適用できることを示し、85 はコンピュータの電源がオンになったときの起動シーケンスが 85 であることを示し、15 はシャットダウンしてサービスが停止したときの起動シーケンスが 85 であることを示します。停止シーケンスは15です。説明行には説明情報を入力するだけで済みますが、「description:」キーワードを指定する必要があります。

その後、chkconfig を使用してサービスの自動起動を管理できます。

りー

当然,除了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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。