• Linux中的服务管理


    概述

    Linux系统可以同时运行数百个任务。其中大多数都属于操作系统环境的组成部分,不过可能也会有那么一两个你不需要的**守护进程**。有3种可用于启动守护进程和服务的工具,Linux发行版支持其中任意一种。传统的SysV系统使用/etc/init.d中的脚本。较新的systemd守护进程除了使用/etc/init.d之外,还用到了systemctl调用。还有些发行版使用的是upstart,配置脚本保存在/etc/init中。systemd如今已经取代了SysVinit系统。upstart是由Ubuntu开发并采用的,但是在14.04版中,已经改成了systemd。

    如何确定系统使用的是SysVinit、systemd还是upstart?

    ps -p 1 -o cmd

    查看一号进程并输出进程启动指令

    #ps -p 1 -o cmd
    CMD
    /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    Linux/Unix系统必须有一个PID为1的初始化进程。该进程会执行fork和exec系统调用,生成其他进程。

    系统显然使用的是sysytemd。

    有些发行版中,SysVinit程序只是实际的init程序的一个符号链接,而且不管你用的是SysVinit、upstart还是systemd,ps命令输出的总是/sbin/init

     /home/scripts/etl]$ps -p 1 -o cmd
    CMD
    /sbin/init
    /home/scripts/etl]$cat /etc/redhat-release
    Red Hat Enterprise Linux Server release 6.8 (Santiago)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ps -eaf 查看

    ps -eaf | grep upstart
    ps -eaf | grep systemd
    
    • 1
    • 2

    如果上面的命令返回upstart-udev-bridge或systemd/systemd,则表明系统运行的是upstart或systemd。如果找不到匹配的内容,说明系统可能运行的是SysVinit。

    实战演练

    大多数发行版都支持service命令。选项-status-all可以输出/etc/int.d中所定义的全部服务的当前状态。
    在这里插入图片描述

    grep命令筛选输出,只显示处于运行状态的服务
            $ service -status-all | grep running
    
    • 1

    把不必要的服务都禁止掉。这可以降低系统负载,提高安全性。
    需要检查的服务如下。
    ❏ smbd、nmbd:这两个是Samba守护进程,用于在Linux和Windows系统间共享资源。❏ telnet:这是一个古老的、不安全的登录程序。除非有无法抗拒的需求,否则应该使用SSH。

    ❏ ftp:另一个同样古老、不安全的文件传输协议。应该用SSH和SCP代替。

    ❏ rlogin:远程登录。使用SSH要更安全。

    ❏ rexec:远程执行命令。使用SSH要更安全。

    ❏ automount:如果你没有用NFS或Samba,就不需要这个。

    ❏ named:该守护进程提供了域名服务(DNS)。只有在系统定义了域名及其对应的IP地址的情况下才有必要使用该服务。你不需要用它来解析域名和访问网络。

    ❏ lpd:行式打印机守护进程(Line Printer Daemon)可以让其他主机使用本系统的打印机。如果不打算用作打印服务器,没必要使用该服务。

    ❏ nfsd:NFS守护进程。允许远程主机挂载本地主机的磁盘分区。如果不是用作文件服务器,可以不使用该服务。

    ❏ portmap:NFS服务的一部分。如果系统没有启用NFS,可以不使用该服务。

    ❏ mysql:数据库服务器。Web服务器可能需要用到它。

    ❏ httpd:HTTP守护进程。有时候是作为Server System软件组的一部分安装的。

    禁止无用服务的方法不止一种,这取决于你使用的系统是基于Redhat还是Debian,运行的是systemd、SysV还是upstart。不管使用哪种方法,必须有root权限.

    systemctl命令

            systemctl enable SERVICENAME
            systemctl disable SERVICENAME
    
    • 1
    • 2
  • 相关阅读:
    学习docker记录(二)
    Python对于有空值的数据,按列进行求平均
    windows10中docker与vm不兼容
    <5>【深度学习 × PyTorch】“自动微分”机制 | 通俗理解 pytorch中的autograd、backward | 实例详解tensors、grad_tensors
    Python编程基础:实验5——函数定义与调用
    【Git笔记】之Git重命名详解
    LabVIEW学习笔记十一:用值(信号)实现,捕捉由程序修改控件值产生的“值改变”事件
    Python中的self与类的理解
    大数据毕业设计选题推荐-智慧消防大数据平台-Hadoop-Spark-Hive
    C#中的is和as的使用和区别
  • 原文地址:https://blog.csdn.net/MyySophia/article/details/126656728