【问题标题】:How to Safely Force Shutdown of Mac如何安全地强制关闭 Mac
【发布时间】:2009-11-15 16:51:27
【问题描述】:

我想要什么

我正在开发一个小应用程序来强迫我只在一天中的某些时间工作 - 我需要一些东西来强迫我在晚上停止工作,这样我才能在白天更有效率。

OS X 中在特定时间关闭我的机器的选项太容易取消了。之后您可以随时重新登录。

我希望我的应用程序退出所有应用程序,无论它们是否有未保存的工作。

我的尝试

我想杀死 loginwindow 进程,但我读到这会导致数据损坏。

我遇到过关闭命令 - 我正在使用 sudo shutdown -h +0 立即关闭。这似乎只是一张票,但我担心如果磁盘工具正在执行某种扫描,它可能会导致数据损坏。

关机命令安全吗?

shutdown 命令会导致损坏吗?或者使用起来安全吗?有没有更好的安全强制关机方法?

【问题讨论】:

  • 你不能结婚。
  • 不要这样做。有一天你会后悔失去一堆未保存的工作。
  • "之后您可以随时重新登录。"接下来,您需要在特定时间禁止登录。
  • @Dennis - 当用户登录时,我计划启动一个帮助应用程序,它会立即检查时间是否在允许的范围内,如果不是,则强制退出所有内容。
  • @Mehrdad 我使用了一个类似的软件来完成这个确切的事情(不幸的是它不再可用)并且在几个月内我从未丢失任何工作,因为我根据需要调整了我的保存模式。

标签: cocoa macos shell shutdown


【解决方案1】:

使用 AppleScript 来tell application "System Events" to shut down

【讨论】:

  • 我在我的一个小实用程序中使用它,但不幸的是它不能以一种强制的方式工作。有时我回到我的 Mac,发现它仍然在运行 Firefox,并显示一条消息告诉我 Firefox 中断了关机。
  • 也许把它放在“忽略应用程序响应”(或类似的)中会有所帮助,但我还没有尝试过。
  • ignoring application responses 仅告诉脚本不要等待您正在与之交谈的应用程序(在本例中为系统事件)的回复。它不会强制任何命令不失败;它不会与应用程序(系统事件)进行任何通信以使其强制终止任何其他应用程序。
【解决方案2】:

shutdown 命令会向正在运行的进程发送终止信号,让它们有机会在需要时进行清理工作。所以一般来说,当应用程序接收到这个信号 (SIGTERM(inate)) 时,它应该结束并退出。

Snow Leopard (10.6) 中的 IIRC 苹果添加了一种称为快速关闭(或类似)的东西,它将向已标记为可以接受的进程发送SIGKILL 信号,在没有机会进行清理工作的情况下关闭它们。这应该使关机更快。默认情况下,应用程序仍会获得SIGTERM,并且必须选择加入SIGKILL;他们可以将自己标记为“脏”,即。 e.有未保存的工作,不想被强行杀死。

因此,虽然在磁盘实用程序运行过程中关闭将中止任何磁盘实用程序正在执行的操作,恕我直言,它通常不会导致数据损坏。但是,根据您当前正在运行的操作,您最终可能会得到不完整的磁盘映像或半格式化的分区。当您知道您配置的工作时间即将结束时,也许您想避免使用它。

如果您希望它在指定时间发生,使用cron 安排关机是一个可行的选择。如果您希望它在您登录后的一定时间后发生,您可以使用 number 参数来关闭以指定从现在起 8 小时。

【讨论】:

  • 很好的答案,丹尼尔,谢谢。听到有关我听说过的 Snow Leopard 快速关闭的更多详细信息很有趣。
【解决方案3】:

如果您想要丢失未保存的工作,那么shutdown -h 是您唯一的答案。

但是,任何在 OS X 上调试过全屏应用程序的人都知道,将应用程序发送到 capture the screen 并让计算机基本上无用(无需从另一台计算机通过 SSH 杀死)非常容易(有人说太容易)过程。)这是另一种选择。

【讨论】:

  • 我不一定想丢失未保存的工作,但我会在关机前 10 分钟向自己发出警告作为提醒。我有一个类似的系统和另一个不再可用的软件,几个月来我从未丢失过任何工作。也感谢您提供有关全屏应用程序的额外信息,这很有趣且有用。
【解决方案4】:

定期关闭计算机的推荐方法是在系统偏好设置 -> 节能面板中。单击右下角的“计划”按钮。其余的都是不言自明的......

【讨论】:

  • 我的问题是:“OS X 中在特定时间关闭我的机器的选项太容易取消了。之后您可以随时重新登录。”
【解决方案5】:

强制您的计算机关闭(并丢弃所有未保存的工作)对我来说听起来不是一个好主意。设置一个闹钟来提醒自己什么时候应该停止工作,并在它响起时离开你的电脑不是更容易、更安全吗? (这就是我所做的。)

编辑:这可能有点粗鲁,这根本不是我的本意。 (我无意取笑你的问题或类似的东西。)我只是认为这将是解决这个问题的更好方法:)

【讨论】:

  • @Leif - 不用担心,它一点也不粗鲁。这是一个完全有效的评论。只设置一个闹钟会更容易也更安全,但不幸的是我的意志力为零,我知道我会开始说“哦,就这件事..”,下次我看的时候时钟应该是凌晨 2 点。它对我不起作用。我希望它做到了!
【解决方案6】:

也许您的计算机上安装了 cron?太棒了=)

【讨论】:

  • cron 一直作为 Mac OS X 的一部分提供(现在作为 launchd 的一部分)。但是,这并不能回答问题: cron 将用于安排关机,但它不会关闭计算机本身;他仍然需要知道什么要安排。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
相关资源
最近更新 更多