Как заставить команды wp-cli работать в скрипте bash от cron - PullRequest
1 голос
/ 27 июня 2019

У меня есть сценарий bash с различными командами WP-CLI для запуска резервного копирования, проверки и оптимизации таблиц БД, проверки уязвимости безопасности, проверки доступных обновлений ядра, плагинов и тем, а затем отправки отчета по электронной почте мне.

Если я запускаю этот скрипт из командной строки, он работает отлично.Однако, если я планирую 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 нужно вызыватьв сценарии.Я уверен, что исчерпал свой поиск в Google по документам wp-cli.Любая помощь будет оценена.

1 Ответ

1 голос
/ 27 июня 2019

Поскольку ваш сценарий является сценарием оболочки (/ bin / sh), то ваши записи PATH в .bashrc не будет читаться как для bash (/ bin / bash) интерактивная оболочка.

Чтобы сделать ваши записи 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

Относительно (WP-CLI установлен как локальная зависимость Composer):

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