AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 487238
Accepted
JoL
JoL
Asked: 2018-12-11 16:06:58 +0800 CST2018-12-11 16:06:58 +0800 CST 2018-12-11 16:06:58 +0800 CST

没有 systemd/init 时如何关机(例如使用 init=/bin/bash)?

  • 772

poweroff抱怨它无法通过 DBus 连接到 systemd(当然,它不存在)。我确实sync跟着kill $$,认为 pid 1 死亡会提示内核关闭电源,但这会导致内核恐慌。然后我按住电源按钮强制关机。

在这种情况下,最合适的关机方式是什么?

linux systemd
  • 5 5 个回答
  • 6971 Views

5 个回答

  • Voted
  1. Best Answer
    sourcejedi
    2018-12-11T16:20:00+08:002018-12-11T16:20:00+08:00

    卸载已安装的文件系统。根文件系统是一个特例;为此,您可以使用mount / -o remount,ro. 在 Linux 上,umount /也恰好可以工作,因为它有效地转换为前一个命令。


    也就是说,您不必担心卸载太多,除非

    1. 您已经挂载了一个旧文件系统,如 FAT(由 EFI 系统分区使用)或 ext2,它不实现日志或等效。使用现代文件系统sync应该就足够了,并且文件系统将在下次启动时非常快速地自我修复。
    2. 您可能留下了一个正在运行的进程来写入文件系统,并且您打算干净地关闭它。在这种情况下,尝试 umount 文件系统很有用,因为 umount 会失败并显示一个繁忙的错误以提醒您剩余的 writer。

    以上是重要的部分。之后,您还可以方便地使用poweroff -f. 或使用 重新启动reboot -f。

    有一个特定于: 的systemd等价物。然而做同样的事情,并且支持这个命令,即使它是在没有 SysV 兼容性的情况下构建的。poweroff -fsystemctl poweroff -f -fpoweroff -fsystemd


    从技术上讲,我记得我的 USB 硬盘驱动器被记录为需要 Windows“安全删除”或同等功能。但是这个要求不是电源故障安全的,而且 Linux 在正常关机期间也不会这样做。最好将其解释为意味着您不应该在硬盘驱动器旋转时点动它 - 包括尝试拔下它。完全断电应停止驱动器旋转。您可能会听到、感觉到或看到它是否不会停止 :-)。

    • 10
  2. SHW
    2018-12-11T22:48:18+08:002018-12-11T22:48:18+08:00

    我将简单地执行以下两个命令:

    echo s > /proc/sysrq-trigger    <= For sync
    echo o > /proc/sysrq-trigger    <= For shutdown the system
    

    假设在内核中启用了魔法键

    • 9
  3. JoL
    2018-12-11T16:20:17+08:002018-12-11T16:20:17+08:00

    好的,所以我突然想到我可以选择exec init. 从那里,我可能以后可以poweroff。不过,我想知道是否有更好的选择。

    • 4
  4. Lie Ryan
    2018-12-12T00:10:25+08:002018-12-12T00:10:25+08:00

    实际上,你想调用reboot(2)系统调用。

    有两种方法可以做到这一点:

    1. 运行reboot -for poweroff -f,这应该reboot(2)直接调用。

    2. 如果您使用的是真正的 Linux 虚拟终端(不是 GUI 终端模拟器),请按Ctrl+ Alt+ Delete。

    请注意,某些用户空间程序(通常是 init)可以禁用键盘快捷键,当禁用时,快捷键将向 init 发送信号。

    上述所有命令都应在卸载所有磁盘或重新安装为只读并运行同步后执行,否则可能会丢失未写入的数据。如果您的 shell 是唯一运行的进程,那么同步可能就足够了。

    • 4
  5. breversa
    2018-12-12T02:14:49+08:002018-12-12T02:14:49+08:00

    您可以使用 Magic SysRq 密钥 ( https://en.wikipedia.org/wiki/Magic_SysRq_key ) 关闭您的计算机。

    要正确关闭,您可以使用以下内容(引用形式 Wikipedia):

    神奇的 SysRq 密钥的一个常见用途是对已锁定的 Linux 计算机执行安全重启(缩写为 REISUB)。这可以防止fsck在重新启动时需要,并使某些程序有机会保存未保存工作的紧急备份。[5] QWERTY   (或 AZERTY)助记符:“ Raiphants I 's S o U tterly B oring ” 、“ Reeboot Even I f System U tterly Broken”或简单的单词“BUSIER”向后读,通常用于记住以下 SysRq-keys 序列:

    • un Raw(从 X 收回键盘的控制权),
    • t Erminate(向所有进程发送 SIGTERM,让它们优雅地终止),
    • k Ill(向所有进程发送 SIGKILL,强制它们立即终止),
    • Ssync(将数据刷新到磁盘),
    • Unmount(以只读方式重新挂载所有文件系统),
    • 重新启动B。

    但是用O(代表 azerty/qwerty)代替最后一个 B 来代替“power O ff”

    • 1

相关问题

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve