systemctl --no-wall rescue

更改为救援模式

您也可以使用以下命令切换到救援模式

[root@onitroad ~]# systemctl rescue
 PolicyKit daemon disconnected from the bus.
 We are no longer a registered authentication agent.

来自 root@onitroad.lab 在 pts/1 上的广播消息(Sun 2015-12-24 23:47:08 IST):

The system is going down to rescue mode NOW!

重要说明:此命令类似于 systemctlisolate rescue.target,但它还会向当前登录系统的所有用户发送一条信息性消息。
要防止 systemd 发送此消息,请使用 --no-wall 命令行选项运行此命令:

CentOS 7/RHEL 7 Systemd 服务

本文概述了从 System V init 脚本到 Systemd 的过渡。

systemd 相对于传统 System V init 工具的一些好处包括:

  • systemd 永远不会丢失初始日志消息
  • systemd 可以根据需要重新生成守护进程
  • systemd 记录运行时数据(即,捕获进程的 stdout/stderr)
  • systemd 在运行时不会丢失守护进程上下文
  • systemd 可以干净地杀死服务的所有组件

配置文件

  • RHEL 6 及更早版本中的 init 进程使用 /etc/inittab 文件来指向启动所需的初始化文件(例如 /etc/rc.sysinit)和运行级别服务目录(例如 /etc/rc5.d)上系统。
  • 在 RHEL 7 中,可以通过将文件添加到 /etc/systemd 目录以覆盖 /usr/lib/systemd 目录中的永久服务文件来修改服务。

查看和更改默认目标(运行级别)

默认运行级别(之前在 /etc/inittab 文件中设置)现在被默认目标替换。
默认目标的位置是 /etc/systemd/system/default.target。
要查看现有的默认目标,请使用以下语法:

[root@onitroad ~]# systemctl get-default
 graphical.target

我们也可以通过检查 default.target 的符号链接来验证它

[root@onitroad ~]# ls -l /etc/systemd/system/default.target
 lrwxrwxrwx. 1 root root 36 Aug 20 12:58 /etc/systemd/system/default.target -> /lib/systemd/system/graphical.target

正如您所看到的,因为 default.target 链接到 graphics.target 因此相同的设置为默认值。

使用以下语法将默认目标设置为不同的目标级别:

[root@onitroad ~]# systemctl set-default multi-user.target
 Removed symlink /etc/systemd/system/default.target.
 Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

检查验证一下

[root@onitroad ~]# ls -l /etc/systemd/system/default.target
 lrwxrwxrwx. 1 root root 41 Dec 24 23:31 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target

如果服务器处于救援模式或者 chroot 环境,则可以使用以下命令语法设置默认目标:

# ln -sf /lib/systemd/system/<desired>.target /etc/systemd/system/default.target

SysV 运行级别 与 systemd target的比较

Runleveltarget 单元描述
0runlevel0.target,poweroff.target.关闭和关闭系统。
1runlevel1.target,Rescue.target.设置救援shell 。
2runlevel2.target,multi -User.target.设置非图形多用户系统。
3runlevel3.target,multi-user.target.设置非图形多用户系统。
4runlevel4.target,multi -User.target.设置非图形多用户系统。
5runlevel5.target,Graphical.target.设置图形多用户系统。
6runlevel6.target,reboot.target.关闭并重新启动系统。

将 sysv init 脚本转换为 systemd

  • 在 RHEL 7 运行级别之前的早期 Red Hat 版本中,运行级别用于标识在请求该运行级别时将启动或者停止的一组服务。
  • 现在,从 Red Hat Enterprise Linux 7 开始,运行级别概念被删除并替换为“目标”,以将启动或者停止的服务集组合在一起。 Systemd 已取代 sysVinit 作为默认服务管理器。
  • 一些 sysVinit 命令已与它们的 RHEL 7 对应命令进行了符号链接,但是它们最终可能会被弃用,以支持未来的标准 systemd 命令
  • 一个目标还可以包括其他目标(例如,多用户目标包括一个 nfs 目标)。
  • 有与早期运行级别一致的 systemd 目标。

以下列表显示了 systemd target如何与传统运行级别保持一致:

传统运行级别新目标名称符号链接到...
运行级别 0runlevel0.targetpoweroff.target
运行级别 1runlevel1.targetrescue.target
运行级别 2runlevel2.targetmulti-user.target
运行级别 3runlevel3.targetmulti-user.target
运行级别 4runlevel4.targetmulti-user.target
运行级别 5runlevel5.targetgraphics.target
运行级别 6runlevel6.targetreboot.target

查看当前目标

要列出所有当前加载的目标单元,请运行以下命令:

[root@onitroad ~]# systemctl list-units --type target
 UNIT                   LOAD   ACTIVE SUB    DESCRIPTION
 basic.target           loaded active active Basic System
 cryptsetup.target      loaded active active Encrypted Volumes
 getty.target           loaded active active Login Prompts
 UNIT                   LOAD   ACTIVE SUB    DESCRIPTION
 basic.target           loaded active active Basic System
 cryptsetup.target      loaded active active Encrypted Volumes
 getty.target           loaded active active Login Prompts
 graphical.target       loaded active active Graphical Interface
 swap.target            loaded active active Swap
 sysinit.target         loaded active active System Initialization
 timers.target          loaded active active Timers

LOAD=反映单元定义是否正确加载。
ACTIVE=高级单元激活状态,例如:SUB的泛化。
上述命令仅显示“活动”单元。

如果要列出所有加载的单元,而不考虑它们的状态,请使用--all或者-a命令行选项运行此命令:

[root@onitroad ~]# systemctl list-units --type target --all
   UNIT                   LOAD      ACTIVE   SUB    DESCRIPTION
   basic.target           loaded    active   active Basic System
   cryptsetup.target      loaded    active   active Encrypted Volumes
   emergency.target       loaded    inactive dead   Emergency Mode
   final.target           loaded    inactive dead   Final Step
   getty.target           loaded    active   active Login Prompts
   graphical.target       loaded    active   active Graphical Interface
   local-fs-pre.target    loaded    active   active Local File Systems (Pre)
   local-fs.target        loaded    active   active Local File Systems
   multi-user.target      loaded    active   active Multi-User System
   network-online.target  loaded    active   active Network is Online
   network-pre.target     loaded    inactive dead   Network (Pre)
   network.target         loaded    active   active Network
   nfs-client.target      loaded    active   active NFS client services
   nss-lookup.target      loaded    inactive dead   Host and Network Name Lookups
   nss-user-lookup.target loaded    active   active User and Group Name Lookups
   paths.target           loaded    active   active Paths
   remote-fs-pre.target   loaded    active   active Remote File Systems (Pre)
   remote-fs.target       loaded    active   active Remote File Systems
   rescue.target          loaded    inactive dead   Rescue Mode
   shutdown.target        loaded    inactive dead   Shutdown
   slices.target          loaded    active   active Slices
   sockets.target         loaded    active   active Sockets
   sound.target           loaded    inactive dead   Sound Card
   swap.target            loaded    active   active Swap
   sysinit.target         loaded    active   active System Initialization
 ● syslog.target          not-found inactive dead   syslog.target
   time-sync.target       loaded    inactive dead   System Time Synchronized
   timers.target          loaded    active   active Timers
   umount.target          loaded    inactive dead   Unmount All Filesystems

列出了29个装载单元。
要显示所有已安装的单元文件,请使用 'systemctl list-unit-files'。

LOAD=反映单元定义是否正确加载。
ACTIVE=高级单元激活状态,例如:SUB的泛化。
SUB=低级别单元激活状态,值取决于单元类型。

更改当前目标(运行级别)

在 RHEL 6 中,这是使用 telinit runlevel完成的
在 RHEL 7 中,您必须使用以下语法

# systemctl isolate name.target

例如

[root@onitroad ~]# systemctl isolate rescue.target
 PolicyKit daemon disconnected from the bus.
 We are no longer a registered authentication agent.

自从我切换到运行级别 1 后,我与终端断开连接

服务所在的位置

  • 在 systemd 之前,服务作为脚本存储在 /etc/init.d 目录中,然后链接到不同的运行级别目录(例如 /etc/rc3.d、/etc/rc5.d 等)。
  • 带有systemd的服务被命名为something.service,比如firewalld.service,存放在/lib/systemd/system和/etc/systemd/system目录下
  • 将 /lib 文件视为更持久的文件,将 /etc 文件视为我们可以根据需要修改配置的地方。
  • 在 RHEL 7 中启用服务时,服务文件会链接到 /etc/systemd/system/multi-user.target.wants 目录中的文件

例如,如果我们运行

systemctl enable kdump.service
将创建一个指向 /usr/lib/systemd/system/kdump.service 的符号链接(/etc/systemd/system/multi-user.target.wants/kdump.service)

Created symlink from /etc/systemd/system/multi-user.target.wants/kdump.service to /usr/lib/systemd/system/kdump.service.

此外,较旧的 System V init 脚本是实际的 shell 脚本。
负责执行相同工作的 systemd 文件更像是包含启动服务所需信息的 .ini 文件。

日期:2020-06-02 22:17:18 来源:oir作者:oir