Вопрос или проблема
Журналы для WP CLI
Я запускаю скрипт WP CLI для регенерации изображений,
seq 192000 194000 | xargs wp media regenerate —only-missing
и получил ошибки, например:
Warning: Не удается найти “margot-fox-pope-francis-post” (ID 204823).
Есть ли способ сохранить логи, чтобы я мог увидеть, какой медиафайл не был сгенерирован?
Я попробовал эту команду ssh
seq 192000 194000 | xargs wp media regenerate —only-missing | tee -a /home/site/public_html/export.txt
но эта команда сохраняет только успешные ID, мне нужно записывать неудачные ID
у вас есть какие-либо советы?
Когда вы готовы начать запись файла лога, введите:
script screen.log
Теперь, до тех пор, пока вы не остановите скрипт, все вводимые и выводимые данные в терминале будут сохранены в screen.log. Когда закончите, просто введите:
exit
Ответ или решение
Чтобы сохранить логи выполнения команды WP CLI и получить информацию о том, какие медиафайлы не были сгенерированы, вы можете воспользоваться несколькими подходами. Ниже описаны два эффективных метода для достижения этой цели.
1. Использование tee
с фильтрацией ошибок
Вы можете использовать конструкцию с перенаправлением ошибок, чтобы сохранить как стандартный вывод, так и вывод ошибок в один лог-файл. Вот пример команды, которая решит вашу задачу:
seq 192000 194000 | xargs wp media regenerate --only-missing 2>&1 | tee -a /home/site/public_html/export.txt
Объяснение команды:
seq 192000 194000
: генерирует последовательные номера от 192000 до 194000.xargs wp media regenerate --only-missing
: передает эти номера в команду WP CLI для регенерации медиафайлов.2>&1
: перенаправляет стандартный поток ошибок (stderr) в стандартный поток вывода (stdout).tee -a /home/site/public_html/export.txt
: записывает весь вывод (как успешные, так и ошибочные сообщения) в файлexport.txt
.
2. Использование script
для полного логирования сессии
Другим подходом является использование команды script
, которая записывает весь ввод и вывод в файл. Этот метод полезен, если вы хотите сохранить полное взаимодействие с терминалом:
script /home/site/public_html/sessions.log
После выполнения этой команды все вводимые данные и вывод будут записываться в файл sessions.log
до тех пор, пока вы не завершите сессию, введя команду exit
.
После этого выполните вашу команду WP CLI:
seq 192000 194000 | xargs wp media regenerate --only-missing
Когда закончите, просто введите exit
для завершения записи.
Вывод
Обе стратегии позволяют сохранять данные о том, какие медиафайлы не были сгенерированы. Первый способ более удобен для записи и анализа конкретной команды, в то время как второй способ позволяет сохранить всю сессию терминала. Выберите тот метод, который лучше всего соответствует вашим потребностям.