Programar um job para ser executado em segundo plano (um agendamento de tarefa no tempo usando at)

0

É possível solicitar que um trabalho seja executado em uma hora posterior especificada em segundo plano?

Isso é o que eu tenho até agora,

 nohup nice MY_PROGRAM > foo.out 2> foo.err < /dev/null | at 05:23 PM Mon & echo $!

No entanto, ecoa de volta uma identificação de processo, por ex. (18454) Este ID de processo não existe, isto é, se for executado

ps 

Este é o ID do processo que é atribuído a esse trabalho

 18453 pts/2    00:00:00 MY_PROGRAM

isso é PID-1 = PID de alguma forma? Alguma ideia de por que isso acontece? ou há algum erro no meu comando?

    
por J. Doe 19.01.2016 / 18:45

1 resposta

1

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.

    
por 19.01.2016 / 19:44