• Linux系统服务管理 服务管理


    Linux独立服务管理

    启动服务

    systemctl start 服务名称.service

    设置开机自启动

    systemctl enable 服务名称.service

    停止开机自启动

    systemctl disable 服务名称.service

    查看服务当前状态

    systemctl status 服务名称.service

    重新启动服务

    systemctl restart 服务名称.service

    查看所有已启动的服务

    systemctl list-units --type=service

    Linux基于xinetd服务的管理

    从守护进程的概念可以看出,对于系统所要管理的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程,这意味着资源浪费。为了解决这个问题,Linux引进了"网络守护进程服务程序"的概念。也就是xinted(extended internet daemon)。xinetd能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口的不同,启动不同的网络服务进程来处理这些用户请求。可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给哪个程序处理,然后启动相应的守护进程。xinetd无时不在运行并监听它所管理的所有端口上的服务。当某个要连接它管理的某项服务的请求到达时,xinetd就会为该服务启动合适的服务器。

    Xinetd托管服务

    Xinetd 托管服务。又名:超级守护进程,可以把一些小服务放到xinetd里进行托管。拖管后的好处就是可以使用xinetd强大的参数来控制这些服务,并且增强安全性。(比如一个小服务没有一些控制功能,但支持xinetd拖管,你就可以拖管并使用xinetd的参数来控制它)。

    以sshd为例,把sshd拖管到xinetd下,sshd服务也有配置文件,为/etc/ssh/sshd_config;但此配置文件功能有限,可以选择拖管sshd服务,来实现额外的功能。

    托管前先关闭ssh本身提供的服务

    #关闭ssh服务
    [root@localhost ~]# systemctl  stop  sshd.service 
    #设置为开机不启动(注意:如果你关闭xinetd之后,需要把ssh服务重新启动,不然你不能通过ssh远程连接)
    [root@localhost ~]# systemctl  disable  sshd.service                 

    开始配置ssh被xinetd托管,默认是没有这个文件的,需要创建。

    [root@localhost ~]#vim  /etc/xinetd.d/ssh

    编辑内容:

    # 代表被托管服务的名称
    service ssh                            
    {
       # 是否禁用托管服务,no表示开启托管服务
       disable = no     
       # 设置失败时,UID添加到系统登记表               
       log_on_failure += USERID   
       # socket连接方式,这个是属于本地方式,对ssh无效
       socket_type = stream         
       # 设置服务启动时需要的参数
       server_args = --daemon              
       # 每秒25个入站连接,如果超过限制,则等待30秒。主要用于对付拒绝服务***  
       cps = 25 30                    
       # 代表ssh走的是tcp协议连接
       protocol = tcp                 
       # 是否并发,这个参数对ssh无效
       wait = no                       
       # 以什么用户进行启动
       user = root                   
       # 被托管服务的启动脚本
       server = /usr/sbin/sshd         
       # 启动脚本的参数
       server_args = -i                
    }

    重新启动xinetd服务

    [root@localhost ~]# systemctl  restart  xinetd.service
    #查看ssh是否被托管
    [root@localhost ~]# lsof -i:22  

    查看22端口的进程,由sshd变为了xinetd就表示你拖管成功了

    可以对ssh 添加对IP或网段的访问控制功能,这个是ssh服务本身不具备的功能(除非写iptables)

    [root@localhost ~]#vim  /etc/xinetd.d/ssh

    添加对IP或网段的访问控制功能

    # 代表被托管服务的名称
    service ssh                            
    {
       # 是否禁用托管服务,no表示开启托管服务
       disable = no     
       # 设置失败时,UID添加到系统登记表               
       log_on_failure += USERID   
       # socket连接方式,这个是属于本地方式,对ssh无效
       socket_type = stream         
       # 设置服务启动时需要的参数
       server_args = --daemon              
       # 每秒25个入站连接,如果超过限制,则等待30秒。主要用于对付拒绝服务***  
       cps = 25 30                    
       # 代表ssh走的是tcp协议连接
       protocol = tcp                 
       # 是否并发,这个参数对ssh无效
       wait = no                       
       # 以什么用户进行启动
       user = root                   
       # 被托管服务的启动脚本
       server = /usr/sbin/sshd         
       # 启动脚本的参数
       server_args = -i    
       # 表示允许1网段访问
       only_from = 192.168.1.0/24              
       # 表示只能1网段访问,但1网段里的20和200这两IP不能访问            
       no_access = 192.168.1.20 192.168.1.200 
       # 最大连接数为3
       instances = 3                                  
       # 每个源IP只能有1个连接
       per_source = 1                                 
       # 只能9:00到18:00才能ssh连接
       access_times = 9:00-18:00                      
       # 指定日志记录到/var/log/xinetd_ssh.log里
       log_type = file /var/log/xinetd_ssh.log   
       # 指定ssh的连接端口为7722    
       port = 7722                             
    }

    添加完成后重新启动xinetd服务

    Linux源码包服务管理

    源码包服务中所有的文件都会安装到指定目录当中,所以服务的管理脚本程序也会安装到指定目录中。源码包服务的启动管理方式就是在服务的安装目录中找到管理脚本,然后执行这个脚本。我们可以査看每个服务的说明文档 (一般是 INSTALL 或 READEM),在这个说明文档中会明确地告诉大家服务的启动脚本是哪个文件。

    源码包服务被服务管理命令识别

    在默认情况下,源码包服务是不能被系统的服务管理命令所识别和管理的,但是如果我们做一些设定,则也是可以让源码包服务被系统的服务管理命令所识别和管理的。 

    Centos 系统服务脚本目录 /usr/lib/systemd/ 下有系统(system)和用户(user)之分。如需要开机没有登陆情况下就能运行的程序,则保存在系统服务 /usr/lib/systemd/system/下,如果需要用户登录后才能运行的程序,则保存在用户/usr/lib/systemd/user/ 下。服务以.service结尾。

    这边以mysql 为例:

    1.建立服务文件

    [root@localhost ~]# vim /lib/systemd/system/mysql.service 

    编辑内容如下:

    [Unit]
    Description=mysql
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    ExecStart=/usr/local/mysql/support-files/mysql.server start
    #ExecReload=/usr/local/mysql/support-files/mysql.server restart
    #ExecStop=/usr/local/mysql/support-files/mysql.server stop
    #PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target

    说明:

    • [Unit]:服务的说明
    • Description:描述服务
    • After:描述服务类别
    • [Service]服务运行参数的设置
    • Type=forking是后台运行的形式
    • ExecStart为服务的具体运行命令
    • ExecReload为重启命令
    • ExecStop为停止命令
    • PrivateTmp=True表示给服务分配独立的临时空间
    • [Install]服务安装的相关设置,可设置为多用户

    注意:[Service]的启动、重启、停止命令全部要求使用绝对路径

    把服务添加到linux系统的自启动服务列表中去,使用命令:

    [root@localhost ~]# systemctl enable mysql.service

    查看是否添加成功,使用命令:

    [root@localhost ~]# systemctl status mysql.service
  • 相关阅读:
    hadoop hdfs总结 NameNode部分 概述
    最近近况
    hadoop hdfs总结 NameNode部分 1
    rsync 使用
    SmartHost
    hadoop unit test 问题
    git 使用记录
    java 类内存分配计算
    hadoop hdfs总结 NameNode部分 2
    0417 430调试技巧
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/10092175.html
Copyright © 2020-2023  润新知