- 创建一个sh脚本,sh脚本的内容是执行python程序的命令
cd到要存放sh脚本的路径,我创建了一个ssr.sh文件。比如我的脚本内容如下:
#!/bin/sh
nohup python /Users/mrl/software/ssr/shadowsocks/local.py -c /etc/shadowsocks.json
第一行指定了使用bash运行这个脚本,因为这个是shell脚本。第二行中第三部分是python脚本所在目录。
然后是为当前用户给这个sh脚本赋予执行权限
chmod u+x ssr.sh
- 创建plist文件
cd到~/Library/LaunchAgents/
下,创建一个plist文件,文件名随意,比如我的是com.myapp.ssr.plist
。
内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.myapp.ssr</string>
<key>ProgramArguments</key>
<array>
<string>/Users/mrl/workspace/scripts/sh/ssr.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
</dict>
</plist>
其中,/Users/mrl/workspace/scripts/sh/ssr.sh
就是启动ssr的脚本路径。
然后,就是让Launchctl加载这个启动项。命令如下
launchctl load com.myapp.ssr.plist
使用命令
plutil com.myapp.ssr.plist
可以检查这个plist文件的语法格式是否有误。
此时可以立即用 launchctl start com.myapp.ssr.plist
来验证一下这个开机启动项有没有正确配置。
另外还有一个不错的launchctl管理工具可以试一下,功能比较多,比如它能指出某个存在问题的launchctl任务中错误的地方是哪里。
工具叫做launchcontrol,到soma-zone可以找到下载链接。
但是,除了创建sh脚本用以运行python程序,然后用launchctl开机运行sh脚本这种略显繁琐的方法来达到开机跑一个python程序的目的,应该还有更简单直接的方法,有人知道的话不妨分享一下。
更多关于launchctl的信息可参考:
mac使用launchctl定时运行程序
Mac创建定时任务