O programa de linha de comando “import” do ImageMagick falhou ao tirar uma captura de tela do script CRON

0

Olá, eu escrevi um script de linha de comando simples que é suposto para tirar minha screenshot a cada 5 minutos.

(usando o programa "import" do ImageMagick)

aqui está o script (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 &

isto funciona bem se eu executar manualmente, por exemplo:

# ./shottr.sh

ou

#sh shottr.sh

o cron é configurado assim:     

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

o script em si está sendo executado (ouço uma voz dizendo: "Screenshot"), mas a captura de tela real não é tirada.

P.S: Tenha certeza de que NÃO é um problema de permissão (coloquei uma simples chamada de "toque" e o arquivo foi criado)

pode ser se for executado a partir do cron ... ele não tem uma "janela", então não pode tirar uma captura de tela do nada? Se for esse o caso, como posso resolver isso?

    
por bakytn 16.02.2011 / 13:23

1 resposta

8

Quando você está executando o script em cron , ele não tem acesso à variável de ambiente DISPLAY , que é como ele sabe o que o X11 exibe com o qual interagir. Você pode conseguir que isso funcione adicionando o seguinte ao seu script:

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

Isso pressupõe que seu DISPLAY seja sempre :0 , o que é verdadeiro se você estiver efetuando login no console, mas não verdadeiro, se estiver executando o X remotamente.

    
por 16.02.2011 / 13:48