Entendendo o comando at para agendar outro comando

3

Eu uso o cron para agendar coisas no Linux, mas recentemente descobri o comando "at".

sudo apt-get install at

Eu não entendo o escopo do qual este comando opera:

  • Como você agendaria um comando com, normalmente requer privilégios de administrador?
  • Qual é o diretório de trabalho (pwd) de um comando agendado com?

Além disso, tudo o que tentei até agora não conseguiu o que eu estava tentando fazer.

Por exemplo, tentei iniciar o gedit daqui a um minuto:

echo "gedit" | at now + 1 minute

Esperei um minuto e nada aconteceu.

Eu tentei desligar meu monitor em um minuto:

echo "xset dpms force off" | at now + 1 minute

Esperei um minuto e nada aconteceu.

Se eu não conseguir "fazer" uma tarefa confiável em um minuto a partir de agora, como posso ter certeza de que ela executará algo que eu digo que faça amanhã e depois?

O que estou perdendo aqui?

    
por Lonnie Best 16.06.2014 / 18:37

1 resposta

6

Tente:

~$  at now + 1 minute
at> ls -ahl > /tmp/at_test
at> ^D

Você encontrará /tmp/at_test após o comando ser executado.

Se você quiser executar algum aplicativo de GUI, você deve especificar DISPLAY variable; Use echo $DISPLAY para descobrir que você exibe

~$  at now + 1 minute
at> DISPLAY=:0 gedit
at> ^D

A tubulação também está ok:

echo "DISPLAY=:0 gedit" | at now + 1 minute
    
por dan08 16.06.2014 / 18:44