如何让wp-cli命令在cron的bash脚本中工作

时间:2019-06-27 01:19:08

标签: wordpress bash wp-cli

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

如果我从命令行运行此脚本,则它可以完美运行。但是,如果我安排了一个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”,则可以正常运行。

我尝试了各种不同的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的搜索。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

  

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

     

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

请参见https://unix.stackexchange.com/a/163126/72176


因此,有趣的部分不是您的crontab,而是您的脚本。只需将绝对或相对位置称为obj.products.filter( p => p.SKUs.filter( att => att.Attributes.filter(inner => inner.value == 'Color' || inner.value == 'Size').length > 0 ? true : false).length > 0 ? true : false) 或按照上面的建议进行修复即可,它应该可以工作。

绝对:

wp

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

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