“at” (lote) job + dialog = nada

1

O objetivo: ser capaz de obter uma "infobox" para abrir em um terminal depois de algum tempo; estilo de despertador, (em uma caixa Linux derivada do Debian). No entanto:

> at now + 3 min
dialog --infobox "Time to attend to matters\!" 6 33

não produz saída. e um e-mail do sistema que diz "Erro ao abrir o terminal: desconhecido". Então, prefixamos o diálogo com algumas variáveis de ambiente que fizeram o truque no passado, que o comando após "at" agora se parece com isto:

TERM=linux DISPLAY=":0.0" dialog --infobox "Seek ye the truth\!" 6 33

Agora, a única coisa produzida é um e-mail do sistema cheio de seqüências de escape, o que eu acho que é a saída do próprio diálogo? Como alguém consegue dialogar para jogar bem com "at"? (obrigado!)

    
por Theophrastus 18.06.2015 / 19:48

2 respostas

0

at e cron são ferramentas para executar comandos autônomos. O comando planejado pode ser executado quando a sessão do usuário não existe ou quando o usuário está logado no terminal diferente para que o daemon atd leia a saída padrão do comando e a envie para o usuário por email. Quando o usuário quer fazer outra coisa, ele deve redirecionar a saída padrão. Mas o redirecionamento para o terminal do usuário é bastante complicado, porque o comando tem que determinar o terminal de alguma forma.

Se você deseja exibir algo após um atraso, tente algo como

(sleep 10 && /bin/echo "game over") &
    
por 05.07.2015 / 18:40
0

Os comandos que usam dialog não funcionam porque não há terminal (tty) associado ao processo at . Como cron , at pretende ser um ambiente não interativo. Como não há terminal para o dialog interagir, definir TERM não ajuda.

Se você estiver logado (e tiver X em execução), você pode fazer com que dialog apareça em um terminal separado. Por exemplo:

at now -f foo

onde foo tem

xterm -display :0 -e dialog --msgbox "Seek ye the truth!" 6 33 &

funciona bem o suficiente:

masadicionaalgumasalterações:

  • umainfoboxpiscanatelaedesaparecerápidodemais.Useummsgboxemvez
  • nãoesperenatarefaem/loteparaconcluir:use"&"

Se você precisar de uma resposta de dialog , deve ter em mente que normalmente grava a interface de texto na saída padrão e sua resposta ao erro padrão. Você pode reverter isso (simplificando os scripts) usando a opção --stdout . (O zenity não suporta essa opção, portanto, você pode querer acomodar isso por uma solução alternativa de script).

Leitura adicional:

por 20.06.2016 / 00:49

Tags