Como usar o Crontab para mostrar algo aos usuários em DISPLAY =: 0.0 ou executar um programa GUI

2

Eu realmente gostaria de poder usar o crontab para atualizar algo a cada 3 horas, mas o crontab não executará meu script com privilégios suficientes para executar uma GUI.

Esclarecimento: Eu tenho um script complicado que gera uma imagem (com base no conteúdo da web atual disponível de alguns servidores) a cada 3 horas - eu quero que ele exiba o que está fazendo, para saber se falhou ou não.

Eu tentei:  1. Adicionando um arquivo ao /etc/cron.d/myscript para o cron rodar  2. variações de xdg-open, gnome-terminal, mrxvt -e, env DISPLAY =: 0.0, raiz / usr / local / bin / myscript  3. Editando meu usuário cron-crontab -u username -e

O Myscript é um pequeno bichinho complicado que faz o download de uma imagem (que é atualizada a cada meia hora) e depois baixa uma página de websites diferentes como index.html - e encontra a imagem específica de que precisa (com base na data e hora de hoje) depois corta e transforma, com imagemagick.

    
por palbakulich 31.01.2011 / 08:29

3 respostas

3

man xauth
man xhost

Você pode tentar xhost local: como o começo.

    
por 31.01.2011 / 09:00
1

Se você deseja abrir uma janela na área de trabalho do usuário, é necessário exportar as informações de autenticação do X11 do contexto do usuário e fornecê-las ao seu contexto raiz.

Como usuário, exporte as informações do xauth:

$ xauth extract /home/foo/xauth-foo $DISPLAY
$ echo $DISPLAY
:0.0

Em seguida, como root, importe-o e inicie seu cliente X:

# xauth merge /home/foo/xauth-foo
# export DISPLAY=:0.0
# xclock

Isso não foi testado em minhas anotações. Eu não tive um caso de uso para isso em pelo menos 5 anos.

    
por 31.01.2011 / 14:17
0

Na verdade, eu só perguntei isso pergunta eu mesmo e consegui responder depois de obter alguma orientação ( Source 1 & Source 2 ). No entanto, isso foi para o raspberry Pi, então você pode precisar usar algum outro comando.

gnome-terminal -e command

xterm -e command

konsole -e command

terminal -e command

lxterminal -e command

Usando o comando lxterminal -e command , posso fazer o terminal abrir uma nova janela. Mas isso não é tudo que precisa ser feito. Especifique o caminho em vez de confiar em variáveis de ambiente no crontab ... e eu já estava usando PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin , então eu fui com isso. Em seguida, crie um script simples para usar no crontab, que chama outro script.

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
lxterminal -e /home/pi/Public/./test

Crontab (comando crontab -e) acaba parecendo ...

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
* * * * * /home/pi/Public/test2

Que chama o teste final do script.

#!/bin/bash
echo 'This is a test.'
echo 'This is a written test with lxterminal -e for real.' >> /home/pi/Public/testwrite.txt
sleep 10
    
por 22.10.2017 / 03:07