6

我想要的是

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

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

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

我试过的

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

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

关机命令安全吗?

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

4

6 回答 6

3

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

于 2009-11-15T19:25:26.220 回答
2

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

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

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

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

于 2009-11-15T17:56:44.273 回答
1

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

但是,任何在 OS X 上调试过全屏应用程序的人都知道,应用程序捕获屏幕并使计算机基本上无用(无需从另一台计算机通过 SSH 来终止进程)非常容易(有人说太容易) 。 ) 那是另一种选择。

于 2009-11-15T19:18:50.287 回答
1

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

于 2009-11-16T12:33:29.000 回答
0

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

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

于 2009-11-15T19:44:23.600 回答
-1

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

于 2009-11-15T17:28:03.297 回答