bash 脚本、mysql 插入和 launchd 的问题

bash 脚本、mysql 插入和 launchd 的问题

我正在开发一个自动化系统,它由 3 个部分组成:mysql、bash 和 launchd。Bash 脚本获取与工作相关的内容、zip 文件、存档的文件夹,并将有关它们的信息放入位于本地 MAMP 服务器上的数据库中。当我从终端运行脚本时,一切都按预期运行。但是当我使用 Launchd 自动运行此脚本时,它运行正常,没有错误,并且不会将值放入数据库中。

我尝试记录返回的消息,但是由于命令已按预期运行,因此日志最终为空。

任何帮助,将不胜感激!

.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.adevo.ari.zip</string>

  <key>ProgramArguments</key>
  <array>
    <string>/Volumes/Archive-Plus/B-ARCHIVE-PLUS/ZZ_UTILITY_FOLDER/Compress.sh</string>
  </array>

  <key>Nice</key>
  <integer>1</integer>

  <key>StartInterval</key>
  <integer>120</integer>

  <key>RunAtLoad</key>
  <true/>

</dict>
</plist>

我仅通过搜索网页就制作了这个 .plist 文件。

据我所知,问题出在 launchd plist 文件中。它不知何故没有给出使用 mysql 数据库的“范围”。

答案1

根据我的经验,脚本或可执行文件行为的变化通常由环境(PATH 等)导致。因此,我强烈建议使用包装器脚本来配置相关脚本或可执行文件的环境,然后使用它env -i来测试包装器的执行情况。

它还可以帮助在包装脚本中配置任何所需的环境变量之前剥离环境。

这对于 cron、Jenkins、Rundeck 以及许多其他调用脚本或可执行文件的方式也很有用。

相关内容