• Systemd


      systemd 是 Linux 下一个与 SysV 和 LSB 初始化脚本兼容的系统和服务管理器。systemd 使用 socket 和 D-Bus 来开启服务,提供基于守护进程的按需启动策略,保留了 Linux cgroups 的进程追踪功能,支持快照和系统状态恢复,维护挂载和自挂载点,实现了各服务间基于从属关系的一个更为精细的逻辑控制,拥有前卫的并行性能。systemd 无需经过任何修改便可以替代 sysvinit 。

      systemctl命令的基本操作格式是:

      systemctl   动作   服务名.service

      可以看一下--help的解释

    使用systemctl命令,要记住start,stop,restart,status,enable,disable,is-enabled。就可以很好的使用!

      系统管理员可以使用本地命令 systemctl 来替换 SysVinit 的工作流程。需要注意的是,在 systemd 的世界里 service 和 chkconfig 命令将继续像之前一样工作。

    systemctl 是最主要的工具。它融合 service 和 chkconfig 的功能于一体。你可以使用它永久性或只在当前会话中启用/禁用服务。

      systemd-cgls 以树形列出正在运行的进程。它可以递归显示给定控制组内容。

      运行一个服务:

      systemctl start foo.service

      关闭一个服务:

      systemctl stop foo.service

      重启一个服务:

      systemctl restart foo.service

      显示一个服务(无论运行与否)的状态:

      systemctl status foo.service

      在开机时启用一个服务:

      systemctl enable foo.service

      在开机时禁用一个服务:

      systemctl disable foo.service

      检查一个是否已开机启用:

      systemctl is-enabled foo.service; echo $?

      0 表示已开机启用,1 表示没有开机启用。在 Fedora 17 中,除了返回值外,相应的 "enable" 或 "disable" 也会显示到标准输出。

      systemd 使用比 sysvinit 的运行级更为自由的 target 概念作为替代。

      第 3 运行级用 myti-user.target 替代。第 5 运行级用 graphical.target 替代。

      runlevel3.target 和 runlevel5.target 分别是指向 muti-user.target 和 graphical.target 的符号链接。

      你可以使用下面的命令切换到“运行级 3 ”:

      systemctl isolate multi-user.target (or) systemctl isolate runlevel3.target

      你也可以使用下面的命令切换到“运行级 5 ”:

      systemctl isolate graphical.target (or) systemctl isolate runlevel5.target 

      systemd 使用链接来指向默认的运行级别。在创建新的链接前,你可以通过下面命令删除存在的链接:

      rm /etc/systemd/system/default.target

      默认切换到运行级 3 :

      ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

      默认切换到运行级 5 :

      ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target

      systemd 不使用/etc/inittab 文件。

      runlevel 命令在 systemd 下仍然可以工作。你可以继续使用它,尽管 systemd 使用 'target' 概念(多个的 'target' 可以同时激活)替换了之前系统的 runlevel 。

      等价的 systemd 命令是:systemctl list-units --type=target 

      如何关机?

      你可以使用:poweroff

      更多可行的命令是: halt -p、 init 0、 shutdown -P now

      service 命令兼容 systemd 吗?

      兼容。service 经过修改可以在处理 systemd 服务时调用 systemctl 实现。因而下面的命令所做的事情相同

      service NetworkManager stop

      (or)

      systemctl stop NetworkManager.service 

      chkconfig 命令兼容 systemd 吗?

      兼容,如果是开启/关闭服务,兼容性保证两种方式都可以运行。

      不过 chkconfig 经过修改使得在处理 systemd 服务时调用 systemctl 工具。同样,在处理传统 sysv 初始化文件时 systemd 自动调用chkconfig 。

      因此,下面的命令做的事情是一样的

      chkconfig NetworkManager off

      (or)

      systemctl disable NetworkManager.service

      chkconfig --list 不会列出 systemd 服务,只列出 Sys V 服务。chkconfig 的输出结果里附带了对此的说明信息。

      如何改变默认 getty 数目?

      添加一个新的 getty :

      只需要在 getty.target.wants/ 目录下新建一个链接到 getty 的示例即可:

      ln -sf /lib/systemd/system/getty@.service /etc/systemd/system/getty.target.wants/getty@tty9.service systemctl daemon-reload systemctl start getty@tty9.service

      删除一个 getty :

      直接删掉 getty.target.wants/ 目录下你不想要的哪个 getty 链接即可:

      rm /etc/systemd/system/getty.target.wants/getty@tty5.service /etc/systemd/system/getty.target.wants/getty@tty6.service systemctl daemon-reload systemctl stop getty@tty5.service getty@tty6.service

      systemd 不使用 /etc/inittab 文件。

      虚拟终端如何设置自动登录?

      首先创建一个新的类似与 getty@.service 的服务:

      # cp /lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service # ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty8.service

      然后编辑 ExecStart、Restart 和 Alias 的值,如:

    ... ExecStart=-/sbin/mingetty --autologin USERNAME %I Restart=no ... Alias=getty.target.wants/getty@tty8.service

      最后重新加载守护进程,运行服务:

      systemctl daemon-reload systemctl start getty@tty8.service

      需要注意的是,如果你退出了 tty8 的会话,你需要等到下次重新启动才能使用,除非你给 Restart 的值是 'always' ,这样你可以使用systemctl 手动开启(但是出于安全考虑,强烈建议你不要那么做)。

      如何定制或增加一个自定义 unit 文件?

      unit 文件在 /etc/systemd/system 下的优先级要高于 /lib/systemd/system 下的。按照个人的需求从后者移动到前者并进行自定义修改。

      如果一行以 .include 开始,后接文件名,那么该文件在此时被解析为特殊文件。请确保包含的文件在指令前有适当的章节头信息。

      如果可能的话,你应当使用 .include 声明 unit 文件而不是在 /lib/systemd/system 下复制整个 unit 文件到 /etc/systemd/system 目录下。这样你才可以在将来升级软件包时正确地升级未改变的指令。

      在使用 .include 和指令时需要小心,因为它可以有多次定义(像 EnvironmentFile= 一样)。由于我们只能添加新指令而不能删除已定义的指令,此时,我们就必须从 /lib/systemd/system 复制整个文件到 /etc/systemd/system 中去。

      假设我们有一个 lighttpd 服务,我们现在想降低它的 niceness 值。我们需要做的就只是添加 Nice=-5 到 lighttpd.service 文件中。我们可以通过复制整个文件/lib/systemd/system/lighttpd.service 到 /etc/systemd/system/lighttpd.service 或者在 /etc/systemd/system/lighttpd.service 中创建如下文件做到

      .include /lib/systemd/system/lighttpd.service [Service] Nice=-5

      不要忘记在编辑一个 unit 文件后使用 systemdctl daemon-reload 重载 systemd 守护进程。

  • 相关阅读:
    Android Studio没有 Build Bundle(s)/Apk(s)选项或者Make Project没有反应
    typescript遍历Map
    Cocos Creator的项目优化问题
    Cocos Creator 常用优化技巧汇总
    CocosCreator客户端优化系列(四):CPU占用以及性能优化
    CocosCreator客户端优化系列(三):内存优化
    CocosCreator客户端优化系列(二):渲染优化
    CocosCreator客户端优化系列(一):加载优化(下)
    CocosCreator客户端优化系列(一):加载优化(上)
    cocos creator性能优化--Prefab加载优化
  • 原文地址:https://www.cnblogs.com/cenglinjinran/p/4159582.html
Copyright © 2020-2023  润新知