Os crontabs de todo o sistema têm os cinco campos de data e hora em cada linha, depois o nome de usuário para executar o cronjob como e, em seguida, a linha de comando. Na sua, os campos de tempo parecem ok, mas o sexto campo ['date
é bastante estranho para um nome de usuário. A mensagem de erro sugere isso.
Como você tem root
mencionado depois do parênteses entre parênteses, acho que você pode ter perdido o nome de usuário, então você deve ter:
0 1 1-7 * 6 root ['date +\%d' == 06] && /home/test/cron-test.sh
Isso ainda tem o problema de que [
é um comando como os outros, então você tem que usar espaço em branco após o [
e antes do ]
. E ==
não é padrão para comparação, =
é. Além disso, para a substituição de comandos, $(cmd)
é apenas melhor que os backticks, então vamos tentar:
0 1 1-7 * 6 root [ $(date +\%d) = 06 ] && /home/test/cron-test.sh
Mas date +%d
informa o dia do mês e, agora, você está executando apenas no sexto dia do mês (independentemente do dia da semana). O terceiro e quinto campos (dia do mês e dia da semana) funcionam um pouco estranhamente juntos: o cronjob é executado se qualquer deles corresponder. Mas queremos correr apenas em um sábado e apenas no primeiro ao sétimo dia do mês, então temos que verificar uma das condições manualmente.
0 1 1-7 * * root [ $(date +\%u) -eq 6 ] && /home/test/cron-test.sh
O próprio cronjob é executado em todos os primeiros sete dias do mês, mas o teste manual [ $(date +%u) -eq 6 ]
verifica se o dia da semana é sábado, antes de executar o comando principal.
(Algumas versões da página de manual crontab(5)
têm um exemplo quase assim, mas não consigo encontrar uma versão online dele.)