“at” comando não está funcionando

2

Eu queria agendar um trabalho com o comando at e ver este erro:

    [root@labeir1 exm]# date
    Sun Dec  9 01:54:45 IST 2012
    [root@labeir1 exm]# at 01:47 "df -kh"
    syntax error. Last token seen: d
    Garbled time

Mesmo o mesmo sem aspas não funciona.

Considerando que quando eu programo o mesmo comando para ser executado assim:

    [root@labeir1 exm]# echo df -kh | at 01:47
    job 4 at 2012-12-10 01:47

Isso mostra que o trabalho está agendado, mas nesse momento em particular não vejo a saída. Não é que a saída será vista no console?

    
por dig_123 08.12.2012 / 21:26

4 respostas

3

Não, a saída não aparecerá no console. Espero que a saída seja enviada por e-mail para você. Experimente

echo df –kh | at –m 01:47

para solicitar explicitamente por e-mail ou

echo "df –kh > df_output.txt" | at 01:47

para gravar em um arquivo.

    
por 11.12.2012 / 02:23
1

Tente com algo como:

mesg y # this is just to make sure you may write to your user
at now + 1 min
at>df -kh | write $USER
at>^D

Se isso não funcionar, você não tem util-linux instalado com pty-helper sinalizador ativado ou você precisa especificar a exibição na qual deseja a saída (provavelmente é $DISPLAY )

Observe que, se você fizer algo como:

at now + 1 min
at>xterm
at>^D 

Provavelmente funcionaria se você instalasse o xterm (teste com qualquer terminal que você use). Então, eu estou supondo que o problema real é que o comando está sendo executado em segundo plano e você precisa puxar a string que você quer perguntar e fazer o que for necessário (talvez enviá-la para qualquer usuário com write ou wall comandos).

    
por 24.04.2015 / 00:42
0

Tente remover o : , então:

echo 'df -kh' | at 0147
    
por 08.12.2012 / 21:29
0

Um pouco mais de uma nota, mas como eu sempre estive lutando com a saída "garble time" de at , eu pensei em compartilhar minha correção para isso. Minha solução é embrulhar em uma função e usar o, mais perdoável, date para corrigir as mensagens de tempo adulteradas.

function at {
  unset IFS
  MOMENT=$*
  AT=$(which at)

  # First try at to see if I finally figured out to produce non-garbled time
  if ${AT} ${MOMENT} 2>/dev/null
  then
    # worked allright, we can exit
    exit
  else
    # We produced garbled time (duh), so let's fix this with date
    MOMENT=$(date --date "${MOMENT}" +'%Y%m%d%H%M')
  fi

  # and try again
  ${AT} -t ${MOMENT}
}

Isso funciona melhor em sistemas que possuem data GNU instalada (a maioria dos sistemas linux).

    
por 08.12.2015 / 10:49