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.
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
.
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.
Tags command-line bash shell scripting