MAC苹果让某一个脚本开机自启动

By | 2020 年 1 月 19 日

脚本或者命令示例
/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。

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据