如何安全地强制关机

时间:2009-11-15 16:51:28

标签: cocoa macos shell shutdown

我想要什么

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

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

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

我尝试了什么

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

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

关机命令安全吗?

shutdown命令会导致损坏吗?或者使用安全吗?是否有更好的方法可以安全地强行关闭?

6 个答案:

答案 0 :(得分:3)

将AppleScript用于tell application "System Events" to shut down

答案 1 :(得分:2)

shutdown命令向正在运行的进程发送一个终止信号,如果需要,可以让他们有机会进行清理工作。因此,通常情况下,当应用程序收到此信号(SIGTERM(inate))时,它应该结束并退出。

雪豹IIRC(10.6)Apple增加了一些称为快速关闭(或类似)的东西,它会发送被标记为正常的进程SIGKILL信号,关闭它们而没有机会进行清理工作。这应该会使关闭更快。默认情况下,应用程序仍然获得SIGTERM并且必须选择加入SIGKILL;他们可以把自己标记为“脏”,我。即有未得救的工作,不想被强行杀死。

因此,当在磁盘实用程序运行中关闭时,将中止磁盘实用程序正在执行的操作,恕我直言,它通常不会导致数据损坏。但是,根据您当前运行的操作,最终可能会出现不完整的磁盘映像或半格式化的分区。当您知道已配置的工作时间即将结束时,您可能希望不要使用它。

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

答案 2 :(得分:1)

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

但是,任何在OS X上调试过全屏应用程序的人都知道,对capture the screen的应用程序而言,这很容易(有些人说太容易了)并且使计算机基本无用(无需从另一台计算机进行SSH操作)杀死这个过程。)这是另一种选择。

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

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

答案 5 :(得分:-1)

也许你的电脑上安装了cron?这太棒了=)