启动作业无法执行bash脚本,收到异常代码126

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

我正在尝试让我的启动作业执行 bash 脚本。 bash 脚本将获取当前日期时间并将其存储在文本文件中。

这是我当前的 plist 在目录 ~/Library/LaunchAgents/ 下:

<?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.intern.testing</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/intern/Desktop/Python/plist_create/testing.sh</string>
    </array>
</dict>
</plist>

这是我的 bash 脚本(testing.sh)的内容:

#!/bin/bash

fileName="/Users/intern/Desktop/Python/plist_create/date_time.txt"

date >> $fileName

但是,当我执行

launchctl start com.intern.testing
时(检查列表中找到作业后),我收到以下错误。

9 月 30 日 15:55:19 实习生-Mac com.apple.xpc.launchd1(com.user.testing[584]):服务退出并出现异常代码:126

我已确保授予我的 bash 脚本执行权限。

我知道有几个人遇到了与我相同的退出代码,但这些解决方案对我不起作用。当我检查退出代码 126 的含义时,链接指出

调用的命令无法执行

我不确定哪个命令无法执行?我尝试单独执行 bash 脚本 (

./testing.sh
) 并且它有效。 有人可以帮助我吗?

[更新于 10 月 4 日上午 10.35 GMT+8]

这是更新后的 bash 脚本:

#!/bin/bash

fileName = "/tmp/a.txt"

/bin/date >> "$fileName"

但是,更新后的 bash 脚本也不起作用。

[更新于 10 月 7 日下午 2:50 GMT+8]

根据@MarkSetcell的建议,我已将StandardErrorPath键添加到我的plist文件中。这是更新的 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.intern.testing</string>
    <key>ProgramArguments</key>
    <array>
<string>/Users/intern/Desktop/Python/plist_create/testing.sh</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/tmp/test.stderr</string>
</dict>
</plist>

我还更新了 bash/shell 脚本:

#!/bin/bash

fileName="/tmp/a.txt"

/bin/date >> "$fileName"

当我开始启动作业并访问 stderr 文件时,它显示

/bin/bash: /Users/intern/Desktop/Python/plist_create/testing.sh: Operation not permitted

是因为我的脚本没有足够的权限吗?或者正在执行脚本的“当前用户”没有足够的权限?

bash macos launchd
1个回答
0
投票

我也有同样的问题。事实证明,您无法从用户空间运行脚本。如果您将脚本移至可接受的位置,例如

/Library/Scripts

我还确保我将日志写入类似的地方

/Library/Logs

然后确保您对 LaunchAgent 或 LaunchDaemon 的权限正确

chown root:wheel /Library/LaunchAgent/com.youragent.plist
chmod 644 /Library/LaunchAgent/com.youragent.plist
那么您应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.