at
lê o comando para executar a partir da entrada padrão.
Você não está enviando o comando para executar at
. Você está executando seu comando e enviando a saída do seu comando para at
.
Tente algo como:
echo 'nohup nice MY_PROGRAM > foo.out 2> foo.err < /dev/null' | at 05:23
O comando echo
imprimirá a string 'nohup nice MY_PROGRAM'
e a |
a passará para at
.
Eu não sei por que você usa nohup
, mas provavelmente você precisa, pois at
empregos não são interativos .
P.S. Observe o uso de aspas simples ( '
) para passar o comando para echo
como uma string.