Здравствуйте, я написал простой скрипт командной строки, который должен делать мой скриншот каждые 5 минут.

(с помощью программы "Импорт" ImageMagick)

вот сценарий (shottr.sh):

#!/bin/sh
PTH="/home/username/images"
NM=`date +%j`_`date +"%F %k:%M"`

/usr/bin/import -window root -resize 1024 "$PTH/$NM.png" &
echo "Screenshot" | festival --tts &

это работает нормально, если я выполняю вручную, т.е.

# ./shottr.sh

или же

#sh shottr.sh

cron установлен так:

*/5 * * * * /bin/sh /home/username/scripts/shottr.sh

сам сценарий выполняется (я слышу голос, говорящий: "Снимок экрана"), но фактический снимок экрана не сделан.

PS: будьте уверены, что это НЕ проблема разрешения (я поместил простой "сенсорный" вызов, и файл был создан)

может быть, если он запускается из cron ... у него нет "окна", поэтому он не может сделать скриншот из ниоткуда ?? Если это так, то как я могу обойти это?

1 ответ1

8

Когда вы запускаете скрипт из cron он не имеет доступа к вашей переменной окружения DISPLAY , которая позволяет узнать, с каким X11-дисплеем нужно взаимодействовать. Вы можете заставить его работать, добавив следующее в ваш скрипт:

# Set display to :0 if it's not already set.
: ${DISPLAY:=:0}
export DISPLAY

Это предполагает, что ваш DISPLAY всегда равен :0 , что верно, если вы входите в консоль, но не верно, если вы используете X удаленно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .