Como obtenho o nome do arquivo e o trabalho num trabalho “at”?

1

Temos um script (gerador) que está criando uma série de at jobs. As tarefas at disparam outro script PHP. O script do gerador faz um loop e faz algo assim:

exec('/usr/bin/at 5:00 May 11, 2015 -f ' . $filename);

$ nome do arquivo é algo assim:

php /some-location/some-script.php arg1 arg2 arg3 

Está funcionando muito bem, nós amamos isso. O que eu estou tentando descobrir é como pegar o ID da tarefa e o nome do arquivo em /var/spool/at/filename do script do gerador enquanto ele é executado, para que eu possa armazená-lo no caso de precisarmos alterar / cancelar após eles terem sido agendados.

Alguém tem alguma idéia de como eu posso pegar essa informação do exec() que está criando o at Job?

    
por dkhendo 24.04.2015 / 16:49

1 resposta

2

De acordo com a documentação em PHP exec () :

If the output argument is present, then the specified array will be filled with every line of output from the command.

A sua versão de at declara o número do trabalho?

$ echo /bin/true | at now + 1hour
job 1 at Fri Apr 24 12:00:00 2015

Nesse caso, você pode usar explode () com um delimitador de espaço para obter o número do trabalho.

<?php
    // Remember to redirect stderr to stdout with "2>&1"
    $command = "echo /bin/true | at now + 1hour 2>&1";

    $at_message = explode(" ", exec($command, $output, $return_value));
    $job_number = $at_message[1];
    echo $job_number;
?>
    
por 24.04.2015 / 17:14

Tags