macOS系统定时关闭和开启Wi-Fi

1. 引言

macOS 系统,需要定时关闭和定时开启 Wi-Fi 1

搜索了一下,发现 macOS 系统终端实现定时任务有两个工具: Launchd(或launchctl)crontab 2

crontab 更通用一点,兼容适合更多的 Linux 系统。故而,选择 crontab 3

2. 步骤

2.1 开启 crontab

  1. 查看 crontab 是否启动:
sudo launchctl list | grep cron

显示:

-   0   com.vix.cron
  1. 检查需要的文件:
ls -al /etc/crontab

显示:

ls: /etc/crontab: No such file or directory

如果 crontab 文件不存在则创建:

sudo touch /etc/crontab

2.2 crontab 创建任务

  1. 编辑定时任务:
crontab -e

一般是进入 vi 编辑模式,点击 i 开始编辑,复制并黏贴指定的定时任务:

# 每天9点关闭Wi-Fi
0 9 * * * /usr/sbin/networksetup -setairportpower en0 off
# 每天12点开启Wi-Fi
0 12 * * * /usr/sbin/networksetup -setairportpower en0 on

:wq退出并保存文件。

  1. 查看定时任务
crontab -l

显示:

# 每天9点关闭Wi-Fi
0 9 * * * /usr/sbin/networksetup -setairportpower en0 off
# 每天12点开启Wi-Fi
0 12 * * * /usr/sbin/networksetup -setairportpower en0 on

这里, en0 是Wi-Fi端口,可以用以下命令查看:

/usr/sbin/networksetup -listnetworkserviceorder

3. 注意

$ sudo touch /etc/crontab
touch: /etc/crontab: Operation not permitted

如果出现了文件权限问题,touch: /etc/crontab: Operation not permitted,可以按照如下操作关闭 macOS 系统的 Rootless 机制(对于一些特殊路径增加了保护,即使 root 权限也不可以操作)4

关闭 macOS 系统的 Rootless 机制5

  • 重启 macOS 系统,按住 Command + R,先看到 Apple 标志或旋转的地球,进入 macOS 恢复模式(Recovery Mode)

  • 点击左上角菜单栏的实用工具,进入终端,键入:

# 关闭 Rootless
csrutil disable
# 开启 Rootless
csrutil enable
# 查看开启状态
csrutil status
  • 重启电脑,再在终端输入: sudo touch /etc/crontab

4. 延伸阅读

  1. 求Mac定时断开WiFi的工具
  2. 19. crontab 定时任务 — Linux Tools Quick Tutorial
  3. Mac 之 crontab 定时任务 - 简书
  4. iMac配置基于crontab的定时任务 | 子勰的博客
  5. macOS 中的 Rootless 机制 - 皎然CEO - 博客园