启动 rsync 备份的 plist

问题描述 投票:0回答:1

我有一个 rsync2server 脚本,从 zsh 运行时可以完成。

现在我正在尝试让它在晚上当我的 MacBook Air m2 2023 Ventura 正在睡觉时运行。

首先我创建了一个 plist 来执行脚本:

pat@Pats-MacBook-Air scripts % cat ~/Library/LaunchAgents/pat.rsync2server.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>pat.rsync2server.plist</string>
    
    <key>StandardErrorPath</key>
    <string>/Users/pat/Documents/scripts/stderr.log</string>

    <key>StandardOutPath</key>
    <string>/Users/pat/Documents/scripts/stdout.log</string>
    
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string><![CDATA[/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin]]></string>
    </dict>

    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>-c</string>
        <string>/Users/pat/Documents/scripts/rsync2server.sh</string>
    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>10</integer>
        <key>Minute</key>
        <integer>55</integer>
    </dict>
</dict>
</plist>

时间是未来几分钟,所以它会在我观看时执行。

执行后我得到stderr.log:

pat@Pats-MacBook-Air scripts % cat stderr.log 
/bin/sh: /Users/pat/Documents/scripts/rsync2server.sh: Operation not permitted

如果我从终端执行:

pat@Pats-MacBook-Air scripts % /bin/sh /Users/pat/Documents/scripts/rsync2server.sh

一切正常。

我的路径有问题吗?我不熟悉 ~/Library/LaunchAgent launchd 和 plist 运行时使用的环境。

我用

加载plist
pat@Pats-MacBook-Air scripts % launchctl load -w ~/Library/LaunchAgents/pat.rsync2server.plist
macos plist launchd
1个回答
0
投票

尝试使用guid用户(与shell上使用的相同),也许是rsync的权限。

通过以下方式获取:id -u [用户名]

将文件加载到系统上

 sudo launchctl bootstrap gui/501  /Library/LaunchAgents/pat.rsync2server.plist

如果您更改文件,请尝试使用以下命令卸载:

sudo launchctl bootout gui/501  ~/Library..
© www.soinside.com 2019 - 2024. All rights reserved.