我没有服务器或其他东西,但我的办公室里有一台运行 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 运行,并安装所有可用的更新。