macOS 定时自动亮屏
2024-11-03 tech mac 3 mins 1253 字
通过 macOS 自带的 caffeinate 工具和定时任务 crontab,可以轻松实现定时自动亮屏的功能。以下是模拟用户活动并保持屏幕唤醒 10 分钟的具体实现。
wake_screen.sh
#!/bin/bash
# 获取当前时间(小时和分钟)和日志时间(带日期)
current_time=$(date +'%H:%M')
log_time=$(date +'%Y%m%d_%H%M')
sleep_time=1 # 设置每次睡眠时间
# 计算循环次数,使得总执行时间接近 60 秒
loop_count=$(( 60 / sleep_time ))
# 检查是否为每天 8 点,并清空日志
if [[ "$current_time" == "08:00" ]]; then
echo "[$log_time] 日志已清空" > "$log_file"
fi
# 判断是否在 13:00 到 13:02 之间
if ([[ "$current_time" > "18:20" && "$current_time" < "18:40" ]] ||
[[ "$current_time" > "13:00" && "$current_time" < "13:02" ]]); then
echo "[$log_time] 执行 caffeinate 命令" >> ~/Workspace/log/cron/caffeinate.log
# 使用 for 循环动态执行 caffeinate 命令
for i in $(seq 1 $loop_count); do
caffeinate -u -d -t $sleep_time
log_time_2=$(date +'%H%M%S')
echo "[$log_time] $i $log_time_2 end" >> ~/Workspace/log/cron/caffeinate.log
done
else
echo "[$log_time] 当前时间不执行命令" >> ~/Workspace/log/cron/caffeinate.log
fi
赋予脚本执行权限 chmod +x ~/wake_screen.sh
macOS 下 cron 的说明
1. 正常情况下,无需手动重启 cron 服务
macOS 默认启用 cron,修改 crontab 文件后会自动加载新任务。
2. 检查任务生效
使用命令查看当前任务:crontab -l
,确保定时任务已正确保存。
3. 手动启动 cron(异常情况下)
如果任务未运行,可以手动启动 cron:
sudo launchctl load -w /System/Library/LaunchDaemons/com.vix.cron.plist