O comando “at” pode executar qualquer tipo de script de shell?

1

Eu criei um programa java que mostrava um diálogo de mensagem. Depois de pressionar OK, ele é fechado e a execução do programa termina.

Em seguida, criei um script de shell alarm.sh que executou o programa. Eu testei e funcionou:

$ alarm.sh "-i It's time to ring up the revenue service"

No entanto, quando eu executei:

$ echo "alarm.sh \"-i It's time to ring up the revenue service\"" | at 15:00

A caixa de diálogo da mensagem não apareceu às 15:00, embora o trabalho tenha sido agendado. Por quê? Como "at" executa scripts de shell e quais são suas limitações?

    
por ka3ak 14.11.2016 / 20:39

2 respostas

2

Não, at só pode executar scripts não interativos.

Esses scripts serão executados sem serem anexados ao terminal de onde você iniciou o comando at . Se o programa gerar algo em seu stdout e / ou stderr flow, essa saída será enviada a você pelo correio.

Algumas variáveis não são retidas quando o script é iniciado, especialmente DISPLAY , que é a razão pela qual sua tentativa falhou. Você pode dar uma olhada no seu e-mail para ver se o erro foi relatado. Se não, sendmail ou similar provavelmente não está instalado / configurado.

Se você quiser usar a exibição atual do X11 quando o comando for executado, você pode defini-lo dessa maneira:

echo "DISPLAY=$DISPLAY alarm.sh \"-i It's time to ring up the revenue service\"" | at 15:00
    
por 14.11.2016 / 23:37
0

at pode não ter qualquer diretório de trabalho atual como seu diretório de trabalho. Especifique o caminho completo para alarm.sh :

echo "/path/to/alarm.sh '-i There is no alarm; only Zuul'" | at 15:00
    
por 14.11.2016 / 22:10