Precisa acionar um script para ser executado em uma data específica de um site estático hospedado pelo Unix

0

Eu tenho um site estático rodando em um serviço de hospedagem Unix onde eu preciso acionar um evento em uma data específica que é calculada a partir de uma data (que muda regularmente) escrita em uma tabela no site. O acionador definirá uma operação de envio de email desativada. Existe uma maneira de acionar o evento a partir de um script no site ou da plataforma de hospedagem? Ou eu preciso recorrer a um programa comercial para fazer isso? (Se sim, qual)? Grato por seus pensamentos sobre isso. Felicidades, David

    
por DavidG 24.01.2014 / 06:29

3 respostas

0

Bem, basicamente, suas opções (dos meus próprios casos de uso) são:

  1. Use sleep(1) para coisas que precisem de precisão de segundo ou segundo, geradas pelo script e nohup(1) 'd.
  2. Use o comando at(1) para planejar a execução com o at-daemon (precisa de uma execução atd )

A opção 1 pode usar tempos relativos e funciona em qualquer unix, isso é sleep-script.sh :

#!/bin/sh

sleep "$@"
## dostuff
echo "DONE"

do seu script:

...
nohup sleep-script.sh 1m 19s &
...

A opção 2 precisa de um atd em execução (e suporta tempos absolutos), no script que você colocaria:

...
at 09:45 tomorrow <<EOF
## stuff i need done
echo "DONE"
EOF
...

A opção 2 é mais confortável porque você pode usar atq e atrm para ver a fila de comandos ou remover trabalhos específicos da fila, respectivamente. Mas não suporta precisão sub-minuto com a sintaxe acima.

    
por 24.01.2014 / 08:54
0

Como eu interpretei mal a pergunta, aqui está outra resposta que lida com o cálculo da data real:

Se você puder extrair a data para que as ferramentas de linha de comando possam usá-la, há uma infinidade de possibilidades, dadd from dateutils por exemplo:

$ dadd 2014-01-27 -4
2014-01-23

Ou até mesmo via stdin:

$ echo 2014-01-27 | dadd -4
2014-01-23

Se por tabela você quer dizer tabela sql, você pode usar a aritmética de data do seu sistema de banco de dados, por exemplo, no mysql:

SELECT DATE_ADD(STR_TO_DATE("2014-01-27", "%Y-%m-%d"), INTERVAL -4 DAY);
+------------------------------------------------------------------+
| DATE_ADD(STR_TO_DATE("2014-01-27", "%Y-%m-%d"), INTERVAL -4 DAY) |
+------------------------------------------------------------------+
| 2014-01-23                                                       |
+------------------------------------------------------------------+

que também pode ser executado a partir da linha de comando para passar o valor para ferramentas como at .

    
por 27.01.2014 / 07:50
0

Mais uma vez obrigado por ter tempo para responder. No momento, eu não começo o roteiro que estou me referindo aqui. Esse é o problema atual. Outro script que eu uso é um simples gatilho de uma forma submetrada. Isso não foi muito complicado. Eu acho que vou ter que continuar procurando. Muito bem sucedida, David

    
por 29.01.2014 / 11:51

Tags