이 문서의 디렉토리:
11.1 서비스의 개념
11.2 독립 데몬 관리
1 1.3 관리 서비스는 부팅 시 자동으로 시작됩니다
11.4 xinetd 및 관련 임시 데몬 관리
11.5 CentOS 7에서 서비스 관리
CentOS 7과 CentOS 6의 서비스 관리 방식은 완전히 다릅니다. 이 기사에서는 먼저 CentOS 6의 관리 방법을 설명하고 마지막으로 CentOS 7의 서비스 관리 방법을 나열합니다.
서비스는 외부 세계에 서비스를 제공하는 프로세스로, 언제든지 외부 세계의 서비스 요청을 지속적으로 제공해야 하기 때문에 백그라운드에 배치됩니다. 서비스 프로세스는 메모리에 상주해야 하며 터미널과 관련되어서는 안 됩니다. 그렇지 않으면 터미널이 서비스 프로그램을 종료합니다. 또한, 외부요청을 받아 외부세계에 서비스를 제공하기 위해서는 본 서비스 전용의 "서비스창구"가 있어야 하며, 이 서비스창구가 포트번호이며, 해당 포트를 통해 서비스 제공자를 확인할 수 있습니다. 숫자.
서비스를 제공하는 쪽을 서버라고 하고, 서버에 서비스를 요청하는 쪽을 클라이언트라고 합니다. 먼저 서버가 서비스 프로세스를 시작하고 이때 해당 포트 번호가 열립니다. 그런 다음 클라이언트는 서버에 대한 요청을 시작하기 위해 서버 IP 주소와 포트 번호를 지정합니다. 패킷 검색 요청은 특정 포트 번호에 대한 것입니다. 커널은 해당 포트 번호를 듣고 있는 응용 프로그램을 알고 있으므로 응용 프로그램이 메시지를 받은 후 해당 응용 프로그램에 요청 메시지를 보냅니다. , 클라이언트와 연결을 설정하고 데이터 전송을 수행합니다.
모든 서비스가 항상 포트 번호를 제공하는 것은 아닙니다. 예를 들어, xinetd 서비스는 필요할 때만 해당 포트를 인수합니다. 예를 들어, rsync 수신 포트가 222인 경우 rsync가 요청되면 xinetd는 이를 수행합니다. 청취 프로세스 중 포트 번호는 222입니다. 요청하지 않으면 xinetd에는 포트 번호가 없습니다.
리눅스에서는 서비스가 독립 데몬과 슈퍼 데몬으로 구분됩니다. 독립 데몬 프로세스는 백그라운드에서 자신을 모니터링하며, 기본적으로 모든 서비스는 독립 데몬급 서비스이다. 슈퍼 데몬은 xinetd 서비스를 대신하여 일부 특수 서비스를 관리합니다. 이러한 서비스가 요청되면 xinetd는 서비스가 제공되면 서비스를 종료합니다. 서비스를 일시적이라고 합니다. 데몬 프로세스는 일시적으로만 존재합니다.
하지만 슈퍼 데몬 xinetd 자체는 자신이 관리하는 임시 데몬에 대한 외부 세계의 요청을 듣기 때문에 메모리에 상주하는 독립적인 데몬이라는 점을 이해해야 합니다. 그러나 작동하지 않는 경우 xinetd는 포트 번호를 점유하지 않습니다. 작동하는 경우 요청된 임시 데몬의 포트 번호를 점유하며 수신 상태에 있습니다.
CentOS 6에서 모든 서비스 스크립트는 /etc/rc.d/init.d/ 디렉터리에 있으며 /etc/init.d/는 해당 소프트 링크입니다. 이 디렉토리의 스크립트는 모두 LSB 스타일 스크립트이며 기본적으로 시작/중지/재시작/재로드/상태와 같은 매개변수를 허용합니다.
[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 디렉터리에 넣기만 하면 됩니다.
chkconfig 명령은 /etc/init.d/ 디렉터리에 존재하는 서비스를 관리할 수 있으며 스크립트의 내용은 특정 조건을 충족합니다.
부팅 시 서비스가 자동으로 시작되는지 여부를 관리하기 위해 chkconfig를 활성화하려면 /etc/init.d 디렉터리에 스크립트를 배치한 다음 스크립트 앞에 chkconfig 줄과 설명 줄을 추가하면 됩니다. 예:
#!/bin/bash # chkconfig: - 85 15# description: The Apache HTTP Server is an efficient and extensible
이 두 줄은 주석이 아닌 모든 줄 앞에 와야 하며, 이 두 줄은 "주석 처리"되어야 합니다. chkconfig 줄의 "-"는 실행 수준 123456에 적용 가능함을 나타내고, 85는 컴퓨터를 켰을 때 시작 순서가 85임을 나타내고, 15는 컴퓨터가 종료되고 서비스가 중지되면 정지 순서는 15입니다. 설명 줄에 일부 설명 정보만 제공할 수 있지만 "description:" 키워드는 반드시 제공해야 합니다.
그런 다음 chkconfig를 사용하여 서비스 자동 시작을 관리할 수 있습니다.
当然,除了chkconfig可以管理开机自启动,将启动命令放在/etc/rc.d/rc.local文件中也是可以的。
该类服务不能直接使用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
瞬时守护进程受两个配置文件控制,一个是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个选项的意义如下图。
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
回到系列文章大纲:
위 내용은 리눅스 서비스 관리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!