man xauth
man xhost
Você pode tentar xhost local:
como o começo.
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.
man xauth
man xhost
Você pode tentar xhost local:
como o começo.
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.
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
Tags bash cron linux ubuntu-10.10