我的电脑电池坏了,但我真的不想花钱更换它,因为它还能用几个小时。但当电量下降到 10% 左右时,它有时会毫无预警地完全关闭电脑。当这种情况发生时,内部时钟会重置为 2000 年 12 月 31 日。我不认为时钟是由像 PC 中的手表电池来维持的,否则我会更换它。
无论如何,一旦操作系统加载,我就会收到警告,日期设置为 2008 年之前,某些应用程序可能无法正常运行,我的 WiFi 就是其中之一。然后我需要执行几个步骤来更改时间、保存、注销并重新登录。这只是一个小小的麻烦,但我希望有一个类似于 PC 的 autoexec.bat 文件的脚本来帮我完成这项工作。
在启动时,我希望有一个脚本检查时间。如果时间早于 2008 年,则将其设置为 2008 年以后的日期。只要日期晚于 2008 年 1 月 1 日,我的 WiFi 就可以正常工作,系统会在几分钟内自动更正时间。
我在基于 Intel 的 Mac 上运行 OSX 10.6.8。
提前感谢你的帮助,Pete
答案1
调度
要按计划运行命令,最好的选择可能是使用crontab
Cron 是类 Unix 计算机操作系统中基于时间的作业调度程序。cron 的名称来自希腊语单词“chronos”,意为“时间”。Cron 允许用户安排作业(命令或 shell 脚本)在特定时间或日期定期运行。
因此,您可以使用它设置脚本和/或程序等,以便按计划执行。对于您的用途,最适用的计时器将@reboot
在每次重启时运行。其实际语法如下:
@reboot /path/to/my/script
因为在某些 unixy 系统上,日期控制内容是 root - 您可能需要crontab
从 root 终端进行编辑 - 因此请执行以下操作(您需要具有管理员/sudo 权限):
- 打开终端
- 输入
sudo -i
或su -
- 键入
crontab -e
(在环境文本编辑器中打开 crontab - 将上面的独自一人(
@reboot /path/to/my/script
) - 退出并保存(实际命令取决于您使用的编辑器)
- 确保脚本被标记为可执行(
chmod +x /path/to/my/script
)
实际脚本
所以,就像我上面说的——我希望看到你在这方面做一些准备工作,因为我们不是剧本写作服务,但我也可以给你一个开始。
您可以使用date
带参数的命令来获取当前系统时间 - 您可以使用date '+%Y'
以下是基于年份的比较:
#!/usr/bin/env bash
sysYr=$(date '+%Y')
cutoff=2008
if [[ $sysYr -lt $cutoff ]]; then
echo "It's before ${cutoff}!"
else
echo "It's ${cutoff} or greater!"
fi
以上内容细目:
- 这只是告诉系统在哪里寻找运行脚本的程序,这比
/usr/bin/bash
以前更方便携带。我相信它也适用于 Mac。如果不行,请键入which bash
,然后您可以直接指向它。 - 是
$( something )
命令替换它将命令替换为命令的输出。在本例中,我们正在运行,date '+%Y'
它将扩展(当前)为整数 2013 - 设置另一个截止变量,仅用于好代码清酒。
- 比较并执行条件命令。通常,最好将要比较的项目括起来,以防止出现空格等情况;但是,这些是数字,没有理由不这样,
-lt
bash 比较数字“小于”也是如此。 - 其余部分相当不言自明 -
echo
显示以下文本。