Cocoa 如何安全地强制关闭Mac

Cocoa 如何安全地强制关闭Mac,cocoa,macos,shell,shutdown,Cocoa,Macos,Shell,Shutdown,我想要什么 我正在开发一个小应用程序来强迫我只在一天中的特定时间工作——我需要一些东西来强迫我在晚上停止工作,这样我可以在一天中更有效 OSX中在特定时间关闭机器的选项太容易取消。之后您可以随时重新登录 我希望我的应用程序退出所有应用程序,无论它们是否有未保存的工作 我尝试过的 我曾想过终止loginwindow进程,但我已经读到这可能会导致数据损坏 我遇到了shutdown命令-我正在使用sudo shutdown-h+0立即关机。这似乎只是一张罚单,但我担心,如果磁盘实用程序正在进行某种扫描

我想要什么

我正在开发一个小应用程序来强迫我只在一天中的特定时间工作——我需要一些东西来强迫我在晚上停止工作,这样我可以在一天中更有效


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

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

我尝试过的

我曾想过终止loginwindow进程,但我已经读到这可能会导致数据损坏

我遇到了shutdown命令-我正在使用sudo shutdown-h+0立即关机。这似乎只是一张罚单,但我担心,如果磁盘实用程序正在进行某种扫描,可能会导致数据损坏

关机命令安全吗?


shutdown命令会导致损坏吗?还是使用安全?有没有更好的安全关机方法?

您的计算机上可能安装了cron?这太棒了=)

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

在雪豹(10.6)的IIRC中,苹果增加了一种叫做快速关闭(或类似的)的东西,它会向被标记为可以使用的进程发送一个
SIGKILL
信号,在没有清理工作的情况下关闭它们。这应该会加快关机速度。默认情况下,应用程序仍然获得
SIGTERM
,并且必须选择
SIGKILL
;他们可以把自己标记为“肮脏的”,也就是说。E有未保存的工作,不想被强行杀害

因此,在磁盘实用程序运行中间关闭时,将中止磁盘实用程序所做的任何操作,IMRO一般不会导致数据损坏。但是,根据当前运行的操作,最终可能会出现不完整的磁盘映像或半格式化分区。当您知道配置的工作时间即将结束时,可能希望避免使用它

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

如果您希望丢失未保存的工作,则
关机-h
是您唯一的答案


但是,任何在OS X上调试过全屏应用程序的人都知道,应用程序很容易(有些人说太容易)使计算机变得基本无用(没有从另一台计算机上删除来终止进程)。这是另一种选择。

使用AppleScript告诉应用程序“系统事件”关闭

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


编辑:这可能会让人觉得有点粗鲁,这根本不是我的本意。(我无意取笑你的问题或诸如此类的问题。)我只是认为这是解决这个问题的更好办法:)

定期计划关闭计算机的建议方法是在“系统首选项->节能器”面板中。点击右下角的“时间表”按钮。其余的都是不言自明的…

你不能结婚。不要这样做。总有一天你会后悔丢失了一大堆未保存的工作。“以后你可以随时重新登录。”接下来,你需要在某些时间内禁止登录。@Dennis-当用户登录时,我计划启动一个助手应用程序,立即检查时间是否在允许的范围内,如果时间不在允许的范围内,则强制退出所有内容。@Mehrdad我使用了一个类似的软件来完成这项工作(不幸的是,它不再可用)几个月来,我从未丢失过任何工作,因为我将我的保存模式调整为必需的。cron一直作为Mac OS X的一部分提供(现在作为launchd的一部分)。不过,这并没有回答问题:cron将负责安排关机,但它不会关闭计算机本身;“他还需要知道该安排什么。”莱夫-别担心,这一点也不粗鲁。这是一个完全正确的评论。设置闹钟既简单又安全,但不幸的是,我没有意志力,我知道我会开始说“哦,就这一件事……”,下一次我看闹钟的时间是凌晨2点。这对我来说就是行不通。但愿如此!回答得很好,丹尼尔,谢谢。听到更多关于雪豹快速关机的细节我很感兴趣。我不一定想失去未保存的工作,但我会在关机前10分钟提醒自己。我有一个类似的系统,还有一个不再可用的软件,几个月来我从未丢失过任何工作。谢谢你提供关于全屏应用程序的额外信息,这很有趣也很有用。我的问题是:“OS X中在某个时间关闭我的机器的选项太容易取消。你可以在以后随时重新登录。”我在我的一个小应用程序中使用这个,但不幸的是,它无法强制工作。有时我回到我的Mac电脑,发现它仍然在运行,Firefox打开,并且有一条消息告诉我Firefox中断了关机。可能会把它放在“忽略应用程序响应”中(或者类似的东西)会有帮助,但我还没有尝试过。
忽略应用程序响应
只会告诉脚本不要等待与之对话的应用程序的回复(在