MacOS服务自启动 MacOS

mowen 2026-01-25 30

sudo vim /Library/LaunchDaemons/com.xxx.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.xxx</string>
    
    <!-- 执行脚本和参数 -->
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/xxx/start.sh</string>
        <string>params</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
    </dict>
    
    <!-- 登录时自动运行 -->
    <key>RunAtLoad</key>
    <true/>
    
    <!-- 如果需要保持常驻,可以加 KeepAlive -->
    <key>KeepAlive</key>
    <true/>

    <key>StandardOutPath</key>
    <string>/var/log/xxx.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/xxx.err</string>
</dict>
</plist>
sudo chown root:wheel /Library/LaunchDaemons/com.xxx.plist
sudo chmod 644 /Library/LaunchDaemons/com.xxx.plist
旧版本:
sudo launchctl unload /Library/LaunchDaemons/com.xxx.plist
sudo launchctl load /Library/LaunchDaemons/com.xxx.plist

新版本:
sudo launchctl bootout system /Library/LaunchDaemons/com.xxx.plist
sudo launchctl bootstrap system /Library/LaunchDaemons/com.xxx.plist
sudo launchctl kickstart -k system/com.xxx
sudo launchctl print system|grep -i xxx
sudo launchctl print system/com.xxx
sudo xattr /usr/local/xxx/xxx
sudo xattr -c /usr/local/xxx/xxx.sh
#!/bin/sh
SOURCE_DIR="$(cd "$(dirname "$0")" && pwd)"

#MacOS不允许LaunchDaemon启动后台孤儿进程,所以不能用nohup以后台方式启动进程
#nohup "${SOURCE_DIR}/xxx" -c ${SOURCE_DIR}/Client-${1}.json >> "${SOURCE_DIR}/nohup_c.out" 2>&1 &

exec "${SOURCE_DIR}/xxx" -c "${SOURCE_DIR}/Client-${1}.json"


xxx=服务名,如果plist内容发生变化,也需要重新launchctl unload/load

最新回复 (0)
返回
发新帖
X