Não é possível fazer o cron abrir um programa em Java com uma GUI

0

Eu fiz um programa simples de "diário" que abrirá uma GUI, solicitará uma entrada e alguns fatores e imprimirá essa informação em um arquivo na data atual. Eu escrevi um pequeno código Java que faz isso quando executado, e eu quero usar o cron para programá-lo para ser executado todos os dias.

Eu também escrevi um script pequeno ("javashell.sh") para mudar para o diretório em que eu tenho o código java, compilá-lo e executar o programa java. Seu conteúdo é este:

#!/bin/bash

cd /home/otolithic/Desktop/projects;
javac Journal.java;
java Journal;

(É tão curto a ponto de parecer inútil, mas eu achei que seria necessário rodar facilmente o programa do cron; sou totalmente novo no Linux, então me avise se isso é estranho ou não)

Eu coloquei em usr / local / bin para que eu possa digitar "javashell.sh" no terminal e o aplicativo de diário não funcione. Mas quando eu tento fazer um cronjob fora deste comando, eu posso ver nos logs que ele é executado mas nenhuma GUI aparece para pedir uma entrada de diário como acontece quando eu apenas executo o javashell.sh fora do cron.

Eu tentei (após o minuto / hora / etc):

export DISPLAY=:0 && javashell.sh
DISPLAY=:0 javashell.sh
env DISPLAY=:0 javashell.sh
$DISPLAY=:0 && javashell.sh
cd ~/path/to/file && javac Journal.java && java Journal
env DISPLAY=:0 && cd ~/path/to/file && javac Journal.java && java Journal

sem efeito.

Eu verifiquei que meu display é de fato: 0, então o problema não é esse. Então, por que isso não está funcionando?

Editar: também experimentou env DISPLAY=:0 && cd /home/otolithic/Desktop/projects && javac Journal.java && java Journal

    
por otolithic 04.06.2016 / 02:35

2 respostas

0

Você não pode abrir um programa no seu monitor a partir do cron. Qualquer trabalho que você deseja executar via cron não deve exigir nenhum serviço de uma sessão de usuário logado, incluindo uma exibição válida para colocar aplicativos GUI.

    
por dobey 04.06.2016 / 04:24
-1

O crontab pode usar um usuário diferente de você. Quando você diz

 cd ~/path/to/file

você está direcionando o arquivo de seu próprio diretório de usuários usando ~ . Você deve usar o caminho absoluto que está no seu caso:

cd /home/yourusername/path/to/file

    
por atayenel 04.06.2016 / 02:55