phantom js chrontab не может подключиться к дисплею x - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь запланировать вызов фантома js с помощью chron. Призрак js откроет веб-сайт и сохранит снимок экрана, и я хочу настроить его регулярно. Моя машина работает без головы, дисплей не подключен. Я использую сценарий bash для вызова фантома js, например,

phantomjs snapshot.js website.com snap.png

Этот код работает нормально, если его вручную выполнить в оболочке. Теперь, когда я настраиваю для него хронтаб, возникает ошибка.

qt.qpa.screen: QXcbConnection: Не удается подключиться к дисплею Не удается подключиться к любому дисплею X.

Я могу решить эту ошибку, изменив код на:

DISPLAY=localhost:11.0
phantomjs snapshot.js website.com snap.png

Это работает нормально, если я вошел в систему через оболочку и запущен crontab. Когда я выхожу из системы, он выдаст ту же ошибку, что и выше.

Когда я устанавливаю дисплей на

DISPLAY=:0

, как я видел в некоторых решениях для подобных проблем, он читает

qt.qpa.screen: QXcbConnection: Не удалось подключиться к дисплею: ​​0 Не удалось подключиться ни к одному дисплею X.

, как локально, так и под crontab.

Я установил PATH и XAUTHORITY = 'home / usr / .Xauthority' в своем сценарии оболочки.

Большое спасибо за предложения

1 Ответ

0 голосов
/ 30 апреля 2020

Я нашел ответ: экспорт переменной платформы в закадровый код в сценарии, который вызывает фантом js, сделал свою работу.

export DISPLAY=:0    
export QT_QPA_PLATFORM='offscreen'
phantomjs snapshot.js www.website.com website.png
...