zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【郑轻邀请赛 G】密室逃脱
    【郑轻邀请赛 C】DOBRI
    【郑轻邀请赛 F】 Tmk吃汤饭
    【郑轻邀请赛 I】这里是天堂!
    【郑轻邀请赛 B】base64解密
    【郑轻邀请赛 A】tmk射气球
    【郑轻邀请赛 H】 维克兹的进制转换
    解决adb command not found以及sdk环境配置
    adb shell 命令详解,android, adb logcat
    Unexpected exception 'Cannot run program ... error=2, No such file or directory' ... adb'
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/10092175.html
Copyright © 2011-2022 走看看