1

我有一个带有各种 WP-CLI 命令的 bash 脚本来运行备份、检查和优化数据库表、运行安全漏洞检查、检查可用的核心、插件和主题更新,然后将报告通过电子邮件发送给我。

如果我从命令行运行这个脚本,它会完美运行。但是,如果我安排一个 cronjob,脚本会运行,但所有 WP 命令的输出如下:

/usr/local/bin/dev-maintenance-check.bash:第 70 行:wp:找不到命令

我尝试了各种不同的 cron 作业格式,但无济于事。这是当前的 cronjob:

0 1 * * 0,3 bash /usr/local/bin/dev-maintenance-check.bash

我的 WP-cli 安装在 usr/local/bin/wp。同样,如果我在命令行中运行“bash /usr/local/bin/dev-maintenance-check.bash”,那就可以了。

对我来说,听起来需要在脚本中调用 wp-cli。我确信我已经在 wp-cli 文档上用尽了我在 Google 上的搜索。任何帮助,将不胜感激。

4

1 回答 1

1

由于您的脚本是一个 shell 脚本 (/bin/sh),因此您在 .bashrc 中的 PATH 条目将不会像 bash (/bin/bash) 交互式 shell 那样被读取。

要使您的 PATH 条目可用于由特定用户运行的 /bin/sh 脚本,请将 PATH 条目添加到该用户主目录中的 .profile 文件中。

https://unix.stackexchange.com/a/163126/72176


所以,有趣的部分不是你的 crontab,而是你的脚本。只需按照上面的建议调用绝对或相对位置wp或对其进行修复,它应该可以工作。

绝对:

#!/usr/bin/env bash
cd /var/www/wordpress
/usr/local/bin/wp cache flush

相对(作为本地 Composer 依赖安装的 WP-CLI):

#!/usr/bin/env bash
cd /var/www/wordpress
vendor/bin/wp cache flush
于 2019-06-27T05:42:38.103 回答