em Saída de comando não é uniforme entre versões e sistemas operacionais. Alguma outra maneira de fazer isso?

1

Eu escrevi um pequeno script PHP para envolver o comando at no Ubuntu. Agora eu preciso obter o mesmo código em execução em um servidor Redhat. É claro que a saída ao adicionar e listar trabalhos é obviamente diferente.

Ubuntu ( at -V = 3.1.11): job 4 at Fri Nov 12 13:41:00 2010

Redhat ( at -V = 3.1.8): job 14 at 2010-11-12 13:42

Existe alguma maneira de modificar a saída do comando at para torná-lo mais uniforme? Eu li man at e não consigo ver nada lá, mas talvez eu tenha perdido algum atalho sorrateiro.

Estou usando o regex para "ler" a saída para que eu possa atualizar isso para suportar o formato Redhat, mas o que acontece se o mesmo for executado em uma distro diferente.

    
por Treffynnon 12.11.2010 / 14:57

3 respostas

2

Eu posso ver que as strings diferem no formato de data / hora. Você pode dividir a saída em duas substrings (job 4 at) e a parte de data / hora. Então, você pode analisar a data usando a função strtotime .

No final, você pode combinar a primeira parte com a data / hora analisada. Então, você consegue uma saída uniforme. Além disso, você pode converter a parte de data / hora para o formato desejado.

    
por 12.11.2010 / 15:11
2

Você pode normalizar as datas usando algo como:

date -d "$date" --rfc-3339=seconds

Eu sugeriria o seguinte, mas at parece ignorar as variáveis de ambiente do local:

LC_TIME=C at -v ...   # has no effect
    
por 12.11.2010 / 16:38
0

Descobri que usar at com o sinalizador -v fornece o mesmo formato de saída de data no Ubuntu e no Redhat. Mas a saída se parece com o seguinte:

Ubuntu

Fri Nov 12 13:41:00 2010

warning: commands will be executed using /bin/sh
job 4 at Fri Nov 12 13:41:00 2010

Redhat

Fri Nov 12 13:42:00 2010

job 14 at 2010-11-12 13:42

Isso me permitirá obter a data da primeira linha e depois o número do trabalho da última linha.

O que é bom ao adicionar trabalhos, mas ao listar trabalhos na fila -v não funcionará e o formato de data ainda será diferente. Acho que pode ser hora de um software de fila diferente.

    
por 12.11.2010 / 16:08