我可以将 OS X 设置为在计算机关闭时自动安装任何下载的更新吗?

我可以将 OS X 设置为在计算机关闭时自动安装任何下载的更新吗?

我没有服务器或其他东西,但我的办公室里有一台运行 Snow Leopard 的 iMac,由一名非技术人员使用。我希望它能够在每天要求关闭计算机时自动安装任何新更新。我知道我可以将软件更新设置为每天检查更新,并下载它们(如果有)。但是,如何在不每次都确认的情况下实际安装它们呢?我不想执行 cron 作业,因为如果那个人工作到很晚,如果它试图关闭他们,那就不好了。此外,那个人正在使用 std 用户帐户运行,因此要安装更新,我必须输入我的管理员级别帐户的凭据。有什么办法可以做到这一点吗?

答案1

在 Mac OS X 关机时安装更新(或执行任何其他操作)是有问题的,因为操作系统只给进程八秒钟的时间关闭,否则就会杀死它们 - 远远没有足够的时间来进行更新。

尽管如此,可能还是有办法解决您的问题。根据您和用户的工作模式匹配程度,您可以等待他们通知您有更新并且方便他们重新启动,然后亲自或通过 VNC/屏幕共享输入您的管理员密码。

或者,如果您已激活 SSH,则可以登录并使用命令行程序softwareupdate

苹果建议如果有更新需要重新启动,则应在运行后立即重新启动计算机softwareupdate,但您可以允许计算机在一天结束时正常重新启动 - 重新启动肯定不是由更新程序强制的,就像 GUI 版本一样。如果您愿意冒这个险,您可以编写脚本:创建以下 Launchd 属性列表。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>some.meaningful.name</string>
    <key>ProgramArguments</key>
    <array>
        <string>softwareupdate</string>
        <string>-i</string>
        <string>-a</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>20</integer>
        <key>Minute</key>
        <integer>00</integer>
    </dict>
    <key>RunAtLoad</key>
    <false/>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>

将其保存在/Library/LaunchDaemons/some.meaningful.name.plist,然后在终端中执行:

sudo launchctl load /Library/LaunchDaemons/some.meaningful.name.plist

这将softwareupdate每天 20:00 运行,并安装所有可用的更新。

相关内容