gpt4 book ai didi

macos - 如何向 OSX launchd plist 添加参数以将输出通过管道传输到日志文件?

转载 作者:行者123 更新时间:2023-11-29 09:15:50 26 4
gpt4 key购买 nike

我已经尝试了很多不同的变体,但就是无法让它工作。

我有一个 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.ilium007.handbrake</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/ilium007/support/scripts/handbrake/handbrake.sh &gt;&gt; /Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string>
<!--<string>&gt;&gt;</string>-->
<!--<string>/Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string>-->
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>

注意那里的评论。

我想将 handbrake.sh 脚本的输出通过管道传输到日志文件并尝试这样做,但在 OSX 上的 system.log 中不断出现“没有这样的文件”错误。

Nov  3 18:03:54 macmini com.ilium007.handbrake[15348]: /bin/bash: /Users/ilium007/support/scripts/handbrake/handbrake.sh >> /Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log: No such file or directory Nov  3 18:03:54 macmini com.apple.launchd.peruser.501[162] (com.ilium007.handbrake[15348]): Exited with code: 127

如果我将 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.ilium007.handbrake</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/ilium007/support/scripts/handbrake/handbrake.sh</string>
<string>&gt;&gt;</string>
<string>/Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>

我想通过 launchd 运行的命令是:

/Users/ilium007/support/scripts/handbrake/handbrake.sh >> /Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log

日志文件中什么也没有出现。但是,如果我从终端运行该命令,我会在日志中获得内容。任何帮助将不胜感激。

最佳答案

>>> 是 shell 运算符,而不是程序参数,并且 launchd 不会通过 shell 传递其命令(除非您强制执行它,如@Lauri 的回答)。但是 launchd 确实有它自己的重定向标准输出的选项:

<key>StandardOutPath</key>
<string>/Users/ilium007/support/scripts/handbrake/logs/handbrake_encode.log</string>

请注意,它会自动追加(相当于>>,而不是>)。您还可以使用 StandardErrorPath 键重定向 stderr。您不能做的一件事是使用 ~(如在 ~/support/scripts/handbrake/logs/handbrake_encode.log 中)——同样,这是 launchd 无法模拟的 shell 功能。

关于macos - 如何向 OSX launchd plist 添加参数以将输出通过管道传输到日志文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13207365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com