• 关于service,systemctl,chkconfig,init


    关于service,systemctl,chkconfig,init

    0、前言

    CentOS 7.x 开始,CentOS 开始使用 systemd 服务来代替 daemon,原来管理系统启动和管理系统服务的相关命令全部由 systemctl 命令来代替。

    1、对比1

    原来的 service 命令与 systemctl 命令对比

    daemon命令 systemctl命令 说明
    service [服务] start systemctl start [unit type] 启动服务
    service [服务] stop systemctl stop [unit type] 停止服务
    service [服务] restart systemctl restart [unit type] 重启服务

    此外还有二个 systemctl 参数没有与 service 命令参数对应

    • status:参数来查看服务运行情况
    • reload:重新加载服务,加载更新后的配置文件(并不是所有服务都支持这个参数,比如network.service

    应用举例:

    #启动网络服务
    systemctl start network.service
    
    #停止网络服务
    systemctl stop network.service
    
    #重启网络服务
    systemctl restart network.service
    
    #查看网络服务状态
    systemctl status network.serivce
    

    2、对比2

    原来的chkconfig 命令与 systemctl 命令对比

    • 设置开机启动/不启动
    daemon命令 systemctl命令 说明
    chkconfig [服务] on systemctl enable [unit type] 设置服务开机启动
    chkconfig [服务] off systemctl disable [unit type] 设备服务禁止开机启动

    应用举例:

    #停止cup电源管理服务
    systemctl stop cups.service
    
    #禁止cups服务开机启动
    systemctl disable cups.service
    
    #查看cups服务状态
    systemctl status cups.service
    
    #重新设置cups服务开机启动
    systemctl enable cups.service
    
    • 查看系统上所有的服务

    命令格式:

    systemctl [command] [–type=TYPE] [–all]
    

    参数详解:

    command - list-units
    依据 unit 列出所有启动的 unit 。加上 –all 才会列出没启动的 unit ; - list-unit-files:依据/usr/lib/systemd/system/ 内的启动文件,列出启动文件列表

    –type=TYPE unit type, 主要有 servicesocketarget

    应用举例:

    systemctl命令 说明
    systemctl 列出所有的系统服务
    systemctl list-units 列出所有启动unit
    systemctl list-unit-files 列出所有启动文件
    systemctl list-units –type=service –all 列出所有service类型的unit
    systemctl list-units –type=service –all grep cpu 列出 cpu电源管理机制的服务
    systemctl list-units –type=target –all 列出所有target

    3、特殊

    systemctl特殊的用法

    systemctl命令 说明
    systemctl is-active [unit type] 查看服务是否运行
    systemctl is-enable [unit type] 查看服务是否设置为开机启动
    systemctl mask [unit type] 注销指定服务
    systemctl unmask [unit type] 取消注销指定服务

    应用举例:

    #查看网络服务是否启动
    systemctl is-active network.service
    
    #检查网络服务是否设置为开机启动
    systemctl is-enable network.service
    
    #停止cups服务
    systemctl stop cups.service
    
    #注销cups服务
    systemctl mask cups.service
    
    #查看cups服务状态
    systemctl status cups.service
    
    #取消注销cups服务
    systemctl unmask cups.service
    

    4、对比3

    init 命令与systemctl命令对比

    init命令 systemctl命令 说明
    init 0 systemctl poweroff 系统关机
    init 6 systemctl reboot 重新启动

    与开关机相关的其他命令:

    systemctl命令 说明
    systemctl suspend 进入睡眠模式
    systemctl hibernate 进入休眠模式
    systemctl rescue 强制进入救援模式
    systemctl emergency 强制进入紧急救援模式

    5、设置

    设置系统运行级别

    运行级别对应表

    init级别 systemctl target
    0 poweroff.target
    1 rescue.target
    2 multi-user.target
    3 multi-user.target
    4 multi-user.target
    5 graphical.target
    6 reboot.target

    此外还是一个 getty.target 用来设置 tty 的数量。

    设置运行级别

    命令格式:

    systemctl [command] [unit.target]
    

    参数详解:

    command:
    
    • get-default :取得当前的 target
    • set-default :设置指定的 target 为默认的运行级别
    • isolate :切换到指定的运行级别
    • unit.target :为5.1表中列出的运行级别
    systemctl命令 说明
    systemctl get-default 获得当前的运行级别
    systemctl set-default multi-user.target 设置默认的运行级别为mulit-user
    systemctl isolate multi-user.target 在不重启的情况下,切换到运行级别mulit-user下
    systemctl isolate graphical.target 在不重启的情况下,切换到图形界面下

    6、依赖

    使用systemctl分析各服务之前的依赖关系

    命令格式:

    systemctl list-dependencies [unit] [–reverse]
    

    -reverse是用来检查寻哪个 unit 使用了这个 unit

    应用举例:

    #获得当前运行级别的target
    [root@oldboyedu ~]# systemctl get-default
    multi-user.target
    
    #查看当前运行级别target(mult-user)启动了哪些服务
    [root@oldboyedu ~]# systemctl list-dependencies
    default.target
    ├─abrt-ccpp.service
    ├─abrt-oops.service
    ├─vsftpd.service
    ├─basic.target
    │ ├─alsa-restore.service
    │ ├─alsa-state.service
    .....(中间省略).....
    │ ├─sockets.target
    │ │ ├─avahi-daemon.socket
    │ │ ├─dbus.socket
    .....(中间省略).....
    │ ├─sysinit.target
    │ │ ├─dev-hugepages.mount
    │ │ ├─dev-mqueue.mount
    .....(中间省略).....
    │ └─timers.target
    │   └─systemd-tmpfiles-clean.timer
    ├─getty.target
    │ └─getty@tty1.service
    └─remote-fs.target
    
    #查看哪些target引用了当前运行级别的target
    [root@oldboyedu ~]# systemctl list-dependencies --reverse
    default.target
    └─graphical.target
    

    7、关闭1

    关闭网络服务

    在使用 systemctl 关闭网络服务时有一些特殊 需要同时关闭 unit.servceunit.socket

    使用 systemctl 查看开启的 sshd 服务

    [root@MineGi ~]# systemctl list-units --all | grep sshd
    sshd-keygen.service loaded inactive dead        OpenSSH Server Key Generation
    sshd.service        loaded active   running     OpenSSH server daemon
    sshd.socket         loaded inactive dead        OpenSSH Server Socket
    

    可以看到系统同时开启了 sshd.servicesshd.socket, 如果只闭关了 sshd.service 那么sshd.socket 还在监听网络,在网络上有要求连接 sshd 时就会启动sshd.service 。因此如果想完全关闭 sshd 服务的话,需要同时停用 sshd.servicesshd.socket

    systemctl stop sshd.service
    systemctl stop sshd.socket
    systemctl disable sshd.service sshd.socket
    

    由于 centos 7.x 默认没有安装 net-tools ,因此无法使用 netstat 来查看主机开发的商品。需要通过 yum 安装来获得该工具包:

    yum -y install net-tools
    

    查看是否关闭 22 端口

    netstat -lnp |grep sshd
    

    8、关闭2

    关闭防火墙firewall

    Centos 7.x 中取消了 iptables , 用 firewall 取而代之。要关闭防火墙并禁止开机启动服务使用下面的命令:

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    

    您的资助是我最大的动力!
    金额随意,欢迎来赏!

    如果,您认为阅读这篇博客让您有些收获,不妨点击一下右下角的推荐按钮。
    如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的关注我

    如果,想给予我更多的鼓励,求打

    因为,我的写作热情也离不开您的肯定支持,感谢您的阅读,我是【MineGi】!

  • 相关阅读:
    畜栏预定【贪心+小根堆】
    电影【离散化】
    最佳牛栏(前缀和+二分)
    防晒【贪心 + 平衡树】
    货仓选址【中位数】证明
    24个不易混淆的数字和字母,常用于密码或密钥
    win8上的新功能,不知道win7有木有,刚偶然发现的
    通过C#类库绘制正态分布的统计图(通用)
    C#组播消息收发
    使用c#类库绘制柱状图
  • 原文地址:https://www.cnblogs.com/MineGi/p/12791844.html
Copyright © 2020-2023  润新知