Executa no comando em dois minutos

2

Estou tentando executar uma linha única usando at .

Basicamente, quero enviar um SMS em algum momento no futuro.

Aqui está o meu comando para enviar um SMS:

php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");'

O acima funciona muito bem! Eu recebo meu SMS em alguns segundos.

Agora, como posso obter at para executar este comando no futuro?

Eu tentei

php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");' | at now + 2 minutes

Mas isso envia o meu comando imediatamente! Quero enviar a mensagem em 2 minutos!

    
por Eamorr 25.07.2014 / 21:05

3 respostas

5

Porque não é assim que funciona o comando at . at recebe o comando via STDIN. O que você está fazendo acima é executar o script e fornecer sua saída (se houver) para at .

Este é o equivalente funcional do que você está fazendo:

echo hey | at now + 1 minute

Como echo hey imprime apenas a palavra "hey", a palavra "hey" é tudo o que eu estou dando at para executar um minuto no futuro. Você provavelmente deseja repetir o comando php completo para at em vez de executá-lo você mesmo. No meu exemplo:

echo "echo hey" | at now + 1 minute

EDITAR:

Como @Gnouc apontou, você também teve um erro de digitação na sua especificação. Você tem que dizer "agora" para saber a que horas você está adicionando 1 minuto para.

    
por 25.07.2014 / 21:12
2

Você tem um erro na sua sintaxe:

php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");' |
at now + 2 minutes

De man at :

You can also give times like now + count time-units, where the time-units 
can be minutes, hours, days, or  weeks and  you  can  tell  at to run the 
job today by suffixing the time with today and to run the job tomorrow by
suffixing the time with tomorrow.

Você deve colocar seu comando php em um shell script, e depois executá-lo.

$ cat sms.sh
#!/bin/bash

/usr/bin/php -r 'include_once("/home/eamorr/open/open.ie/www/newsite/ajax/constants.php");sendCentralSMS("08574930418","hi");'

Então:

$ at -f sms.sh now + 2 minutes
    
por 25.07.2014 / 21:14
0

Se você estiver preocupado em enviar a mensagem após 2 minutos, independentemente da abordagem, sugiro usar sleep .

( sleep 120 ;  php -r 'include_once("/home/eamorr/open/open.ie/www/newsite
/ajax/constants.php");sendCentralSMS("08574930418","hi");' )
    
por 25.07.2014 / 21:30

Tags