Agendando o comando / script especificando o segundo exato

4

Estou usando o bash e imaginando como posso executar um comando / script em uma hora especificada mais tarde, com a precisão de um segundo?

Eu li a página de manual do at -command, mas até onde pude entender, é possível apenas especificar minutos (e não segundos). Agora eu uso primeiro at e, em seguida, sleep para executá-lo no segundo direito. Para demonstrar, se eu gostaria de executar my_script.sh em 22.21.05 eu faria:

echo "sleep 5; my_script.sh" | at 22.21

Mas seria muito melhor ter um comando com ele embutido. Algo parecido com at 22.21.05 .

    
por The Silent Boatman 24.08.2010 / 22:46

2 respostas

5

Eu não acredito que isso seja possível. cron é apenas granular até o minuto, e o utilitário at se conecta a ele para fazer seu trabalho. Eu acho que você tem a solução certa - dormir por x segundos antes de executar.

    
por 24.08.2010 / 23:12
2

Você pode transformar sua técnica em uma função:

atplus () { local sec=${1##*.} time=${1%.*}; shift; echo "sleep $sec; $@" | at $time; }

Experimente:

atplus 22.21.05 my_script.sh

Você deve estar ciente, no entanto, que a precisão não é garantida.

    
por 25.08.2010 / 00:09