我创建了一个使用可湿性粉剂的bash脚本,它的目的是从一个cron作业中运行。它在SSH中运行良好,但在运行cron时失败。在调试过程中,我发现WP部分没有运行。它根本没有输出。
我只取了脚本的WP-CLI部分,并测试了它。我已经证实WP确实是问题所在:
/home/username/script/test.sh
cd /var/www/domain.com/ && wp post create --post-title="test" post-content="testing" --post-status=future下面是一个通过crontab -e从用户帐户添加的cron作业示例:(为测试目的设置为每分钟运行)
*/1 * * * * sh /home/username/script/test.sh如果从SSH运行,脚本将完美运行,但从cron运行时没有输出。我已经尝试将| mail -s example@foo.bar添加到cronjob条目中。它将输出发送到我的电子邮件,但是wp-cli命令没有输出。我还尝试在时间数据和命令之间将我的用户名添加到cron作业条目中,以确保它是作为我的用户运行的。另外,我试着编辑bash脚本并将其更改为mail -s "cool story bro" example@foo.bar,这很好,它完全忽略了WP-CLI。
我已经寻找了大约12个小时的答案。我最近为别人的问题找到了这个答案,我认为这可能会有帮助,但我不知道如何实现它。https://serverfault.com/a/95736
我刚刚找到了其他人问题的答案,这似乎是实现另一个人的答案的方法,但它没有奏效。https://serverfault.com/a/473961,我用的正是他贴的东西。
顺便说一下,这是在最新的Ubuntu服务器上运行的。
请解释一下问题是什么,以及如何解决。或者如果你知道这件事,评论什么的话,我现在很绝望。
发布于 2014-12-31 23:55:50
由于我的问题的答案是作为评论,而不是答案,我将自己回答,以帮助其他人更容易找到问题的答案。
根据Cyrus的建议,我将上面的test.sh更改为:
cd /var/www/domain.com/ && /usr/local/bin/wp post create --post-title="test" post-content="testing" --post-status=future包括完整的路径修复了问题。但是,我不明白为什么从username运行的脚本与从同一个用户从SSH运行的脚本不同。
发布于 2020-01-19 12:20:13
我从which wp获得了路径,并在cron中进行了更新,似乎修复了这些问题。但是有谁能让我知道我们可以在哪里设置wp来在cron下运行它而不需要定义路径呢?
cd /home/master/applications/domain.com/public_html && /usr/local/bin/wp cron event run --due-now
https://serverfault.com/questions/654785
复制相似问题