type
Post
status
Published
slug
101
summary
在Mac系统中编写一个“计划任务”(Scheduled Jobs)脚本来每天下午12点断开WiFi连接,并使用
launchd
来调度此脚本tags
category
password
要在Mac系统中编写一个“计划任务”(Scheduled Jobs)脚本来每天下午12点断开WiFi连接,并使用
launchd
来调度此脚本,可以按照以下步骤操作:第一步:编写脚本
- 打开终端。
- 创建一个新的Shell脚本文件,例如命名为
disconnect_wifi.sh
:
nano disconnect_wifi.sh
- 编辑脚本文件,添加以下内容:
#!/bin/bash #断开WiFi连接 networksetup -setairportpower en0 off && echo $(date +%F%n%T) >> /tmp/disconnect_wifi_success.txt
这个脚本使用
networksetup
命令来断开名为en0
的Wi-Fi接口。请注意,接口名称可能会根据您的系统配置有所不同,通常en0
适用于大多数Mac。- 保存并退出编辑器:
- 按
Ctrl+X
,然后按Y
保存更改,最后按Enter
确认文件名。
- 使脚本可执行:
#bash深色版本 chmod +x disconnect_wifi.sh
第二步:创建launchd
配置文件
- 创建一个新的.plist文件,例如命名为
com.example.disconnect_wifi.plist
:
nano ~/Library/LaunchAgents/com.example.disconnect_wifi.plist
- 编辑.plist文件,添加以下内容:
<?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>com.example.disconnect_wifi</string> <key>ProgramArguments</key> <array> <string> /Users/haolin/developer/scripts/disconnect_wifi.sh </string> </array> <key>StartCalendarInterval</key> <array> <dict> <key>Hour</key> <integer>24</integer> <key>Minute</key> <integer>0</integer> </dict> </array> </dict> </plist>
这个配置文件设置了每天中午12点执行脚本。
- 保存并退出编辑器:
- 按
Ctrl+X
,然后按Y
保存更改,最后按Enter
确认文件名。
- 替换脚本路径:
- 在上面的.plist文件中,将
disconnect_wifi.sh
替换为您实际的脚本路径。
- 加载
launchd
配置文件:
#启动 launchctl load ~/Library/LaunchAgents/com.example.disconnect_wifi.plist launchctl start ~/Library/LaunchAgents/com.example.disconnect_wifi.plist #关闭 launchctl stop ~/Library/LaunchAgents/com.example.disconnect_wifi.plist launchctl unload ~/Library/LaunchAgents/com.example.disconnect_wifi.plist
第三步:验证任务
- 查看任务状态:
launchctl list | grep com.example.disconnect_wifi
如果一切设置正确,您应该能看到类似这样的输出:
1 com.example.disconnect_wifi
注意事项
- 如果您需要在特定时间点重新连接WiFi,可以创建另一个脚本和
launchd
配置文件来执行这个任务。
- 如果您需要在某个特定的WiFi网络上运行此脚本,请确保您的电脑连接到了正确的网络。
- 如果您不再需要这个任务,可以使用
launchctl unload
命令来卸载配置文件。
这样,您就设置了一个每天下午12点自动断开WiFi连接的任务。