Eu estou procurando uma maneira de criar uma linha de comando usando 'at' (atd) para agendar uma tarefa, que agenda uma tarefa para fazer "mais coisas" após uma reinicialização (uma tarefa por vez).
O que estou procurando agora é uma maneira de fazê-lo voar apenas encadeando "em" horários.
O meu problema é que, de alguma forma, me perco com a citação / escape no bash.
o que eu tenho até agora e o que funciona em uma execução manual é:
echo "somecommand -someOptions 2>&1 | mail -s \"$HOST after reboot: somecommand -someOptions\" [email protected]" | at now +5 minutes ;\
#do admin stuff before reboot in less than 5 mins here ;\
touch /fastboot ; reboot
como mencionado, isso funciona bem.
Agora gostaria de encapsular a coisa toda em OUTRO novo comando 'AT', para que a linha de comando anterior possa ser programada para uma hora de início específica e não exija mais uma execução manual.
Eu assumo que deve ser possível encapsular / incluir a coisa toda em outro comando "at", então eu gostaria de descobrir como citar / escapar corretamente para que funcione.
Eu tentei isso (não funciona):
echo "echo \"somecommand -someOptions 2>&1 | mail -s \"$HOST after reboot: somecommand -someOptions\" [email protected]\" | at now +5 minutes ;\
#do admin stuff before reboot in less than 5 mins here ;\
touch /fastboot ; reboot ; " | at now + 1 minute
Eu vejo que ele agenda 2 trabalhos, faz o material do administrador antes de reinicializar e reinicia, mas o segundo (mais tarde) no trabalho é embaralhado / travado por causa de algumas citações / escapamentos ruins, eu acho. Eu gostaria de saber e aprender mais sobre o que está acontecendo aqui e onde eu errei na fuga. Eu acho que eu poderia usar aspas simples no exterior em, já que neste caso eu não preciso de nenhuma expansão de variável, mas vamos supor que eu gostaria de usar a expansão de variáveis lá também. Nesse caso, como devo escapar / citar isso corretamente?