• centos 7 systemctl


    Linux Systemctl是一个系统管理守护进程、工具和库的集合,用于取代System V、service和chkconfig命令,初始进程主要负责控制systemd系统和服务管理器。通过Systemctl –help可以看到该命令主要分为:查询或发送控制命令给systemd服务,管理单元服务的命令,服务文件的相关命令,任务、环境、快照相关命令,systemd服务的配置重载,系统开机关机相关的命令。

      1. 列出所有可用单元

      # systemctl list-unit-files

      2. 列出所有运行中单元

      # systemctl list-units

      3. 列出所有失败单元

      # systemctl –failed

      4. 检查某个单元(如 crond.service)是否启用

      # systemctl is-enabled crond.service

      5. 列出所有服务

      # systemctl list-unit-files –type=service

      6. Linux中如何启动、重启、停止、重载服务以及检查服务(如 httpd.service)状态

      # systemctl start httpd.service

      # systemctl restart httpd.service

      # systemctl stop httpd.service

      # systemctl reload httpd.service

      # systemctl status httpd.service

      注意:当我们使用systemctl的start,restart,stop和reload命令时,终端不会输出任何内容,只有status命令可以打印输出。

      7. 如何激活服务并在开机时启用或禁用服务(即系统启动时自动启动mysql.service服务)

      # systemctl is-active mysql.service

      # systemctl enable mysql.service

      # systemctl disable mysql.service

      8. 如何屏蔽(让它不能启动)或显示服务(如ntpdate.service)

      # systemctl mask ntpdate.service

      ln -s ‘/dev/null”/etc/systemd/system/ntpdate.service’

      # systemctl unmask ntpdate.service

      rm ‘/etc/systemd/system/ntpdate.service’

      9. 使用systemctl命令杀死服务

      # systemctl kill crond

      10. 列出所有系统挂载点

      # systemctl list-unit-files –type=mount

      11. 挂载、卸载、重新挂载、重载系统挂载点并检查系统中挂载点状态

      # systemctl start tmp.mount

      # systemctl stop tmp.mount

      # systemctl restart tmp.mount

      # systemctl reload tmp.mount

      # systemctl status tmp.mount

      12. 在启动时激活、启用或禁用挂载点(系统启动时自动挂载)

      # systemctl is-active tmp.mount

      # systemctl enable tmp.mount

      # systemctl disable tmp.mount

      13. 在Linux中屏蔽(让它不能启用)或可见挂载点

      # systemctl mask tmp.mount

      ln -s ‘/dev/null”/etc/systemd/system/tmp.mount’

      # systemctl unmask tmp.mount

      rm ‘/etc/systemd/system/tmp.mount’

      14. 列出所有可用系统套接口

      # systemctl list-unit-files –type=socket

      15. 检查某个服务的所有配置细节

      # systemctl show mysql

      16. 获取某个服务(httpd)的依赖性列表

      # systemctl list-dependencies httpd.service

      17. 启动救援模式

      # systemctl rescue

      18. 进入紧急模式

      # systemctl emergency

      19. 列出当前使用的运行等级

      # systemctl get-default

      20. 启动运行等级5,即图形模式

      # systemctl isolate runlevel5.target

      或

      # systemctl isolate graphical.target

      21. 启动运行等级3,即多用户模式(命令行)

      # systemctl isolate runlevel3.target

      或

      # systemctl isolate multiuser.target

      22. 设置多用户模式或图形模式为默认运行等级

      # systemctl set-default runlevel3.target

      # systemctl set-default runlevel5.target

      23. 重启、停止、挂起、休眠系统或使系统进入混合睡眠

      # systemctl reboot

      # systemctl halt

      # systemctl suspend

      # systemctl hibernate

      # systemctl hybrid-sleep

      对于不知运行等级为何物的人,说明如下。

      Runlevel 0 : 关闭系统

      Runlevel 1 : 救援,维护模式

      Runlevel 3 : 多用户,无图形系统

      Runlevel 4 : 多用户,无图形系统

      Runlevel 5 : 多用户,图形化系统

      Runlevel 6 : 关闭并重启机器

    CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,说实在的,变的简单而易用了许多。

    下面我们以利用forever来实现Node.js项目自启动为例,初探CentOS 7的systemctl。

    前提:Node.js环境已配置成功,forever包安装成功,有一个能跑的Node.js程序。

    CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下

    每一个服务以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],我写的这个服务用于开机运行Node.js项目,具体内容如下:

    [Unit]
    Description=xiyoulibapi
    After=network.target remote-fs.target nss-lookup.target
     
    [Service]
    Type=forking
    PIDFile=/node.js/pid
    ExecStart=/usr/local/bin/forever start /node.js/xiyoulib/bin/www
    ExecReload=/usr/local/bin/forever restart /node.js/xiyoulib/bin/www
    ExecStop=/usr/local/bin/forever stop /node.js/xiyoulib/bin/www
    PrivateTmp=true
     
    [Install]
    WantedBy=multi-user.target

    [Unit]部分主要是对这个服务的说明,内容包括Description和After,Description用于描述服务,After用于描述服务类别

    [Service]部分是服务的关键,是服务的一些具体运行参数的设置,这里Type=forking是后台运行的形式,PIDFile为存放PID的文件路径,ExecStart为服务的具体运行命令,ExecReload为重启命令,ExecStop为停止命令,PrivateTmp=True表示给服务分配独立的临时空间,注意:[Service]部分的启动、重启、停止命令全部要求使用绝对路径,使用相对路径则会报错!

    [Install]部分是服务安装的相关设置,可设置为多用户的

    服务脚本按照上面编写完成后,以754的权限保存在/usr/lib/systemd/system目录下,这时就可以利用systemctl进行配置了

    首先,使用systemctl start [服务名(也是文件名)]可测试服务是否可以成功运行,如果不能运行则可以使用systemctl status [服务名(也是文件名)]查看错误信息和其他服务信息,然后根据报错进行修改,直到可以start,如果不放心还可以测试restart和stop命令。

    接着,只要使用systemctl enable xxxxx就可以将所编写的服务添加至开机启动即可。

    我的脚本编写方法参照了nginx的编写方法,也可以根据其他功能类似的程序。

    这样看来,虽然systemctl比较陌生,但是其实比init.d那种方式简单不少,而且使用简单,systemctl能简化的操作还有很多,现在也有不少的资料,看来RHEL/CentOS比其他的Linux发行版还是比较先进的,此次更新也终于舍弃了Linux 2.6内核,无论是速度还是稳定性都提升不少。

  • 相关阅读:
    国际商务金融
    [手游新项目历程]第22天-野指针
    疯狂的A股:“杠杆牛市”后,是否坠入新轮回?
    [硬盘分区]EASEUS怎么用(EASEUS Partition Master使用教程)
    [硬盘分区]EASEUS怎么用(EASEUS Partition Master使用教程)
    linux下如何更新glibc包
    游戏是任何行业的垂直行业,《游戏改变世界》读后感
    虚函数实现原理(转)
    虚函数实现原理(转)
    bzoj2783
  • 原文地址:https://www.cnblogs.com/howhy/p/6061127.html
Copyright © 2020-2023  润新知