脚本或者命令示例
/Library/ax111.sh
#!/bin/bash
/Library/ax111 -c /Library/ax111.ini
开机启动需要用Plist方式。那么你需要先知道放在哪
~/Library/LaunchAgents 由用户自己定义的任务项
/Library/LaunchAgents 由管理员为用户定义的任务项
/Library/LaunchDaemons 由管理员定义的守护进程任务项
/System/Library/LaunchAgents 由Mac OS X为用户定义的任务项
/System/Library/LaunchDaemons 由Mac OS X定义的守护进程任务项
LaunchDaemons和LaunchAgents的区别?
LaunchDaemons是用户未登陆前就启动的服务(守护进程)。
LaunchAgents是用户登陆后启动的服务(守护进程)。
例如下面的plist文件
/Library/LaunchDaemons/com.ax111.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.ax111.plist</string>
<key>ProgramArguments</key>
<array>
<string>/Library/ax111.sh</string>
</array>
<key>KeepAlive</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/ax111.err</string>
<key>StandardOutPath</key>
<string>/tmp/ax111.out</string>
</dict>
</plist>
RunAtLoad (可选)
标识launchd在加载完该项服务之后立即启动路径指定的可执行文件。默认值为 false,设置为 true 即可实现开机运行脚本文件。
StartCalendarInterval (可选)
该关键字可以用来设置定时执行可执行程序,可使用 Month, Day, Hour, Minute, Second等子关键字,它可以指定脚本在多少月,天,小时,分钟,秒,星期几等时间上执行,若缺少某个关键字则表示任意该时间点,类似于 Unix 的 Crontab 计划任务的设置方式,比如在该例子中设置为每小时的20分的时候执行该命令。
KeepAlive(可选)
是否保持持续运行
所有key关键字详细使用说明可以在Mac OS X终端下使用命令 man launchd.plist 查询
检查plist语法是否正确
plutil /Library/LaunchAgents/com.ax111.plist
启动与停止
launchctl load /Library/LaunchAgents/com.ax111.plist
launchctl unload /Library/LaunchAgents/com.ax111.plist
注意:
1、com.ax111.plist 需要root属性,以及+x执行权限
sudo chmod 644 /Library/LaunchAgents/com.ax111.plist
sudo chown root /Library/LaunchAgents/com.ax111.plist
sudo chmod +x /Library/LaunchAgents/com.ax111.plist
2、/Library/ax111.sh 需要root属性,以及+x制性权限
sudo chown root /Library/ax111.sh
sudo chmod +x /Library/ax111.sh
3、调试可以尝试使用,一定新建一个终端窗口
sudo tail -f /var/system.log
不断的通过启动与停止查看系统日志进行调试
launchctl load /Library/LaunchAgents/com.ax111.plist
launchctl unload /Library/LaunchAgents/com.ax111.plist
4、如果你开了防火墙,且脚本需要联网,切记分别执行一下/Library/ax111.sh以及其中的命令/Library/ax111 -c /Library/ax111.ini。