Como posso executar dois comandos em sucessão do cron?

1

Eu tenho 2 comandos que precisam ser executados a cada hora, então eu os coloco no arquivo /etc/cron.hourly/hrcron, no seguinte formato

command1; command2

Deveria ter funcionado na minha opinião, mas alguém tem alguma ideia do que está impedindo a execução?

Estou executando o CentOS 6.8.

    
por Sollosa 03.07.2017 / 14:59

2 respostas

5

Os arquivos colocados em /etc/cron.hourly , cron.daily e cron.monthly precisam ser executáveis. Se você colocar um arquivo de texto com uma única linha, como mostrado na sua pergunta, nesse diretório, ele não poderá ser executado pelo mesmo motivo que você não pode executar um arquivo como um shell script a partir da linha de comando.

O que você quer dizer é isto:

#!/bin/sh
command1
command2

Você pode concatenar a segunda e a terceira linhas com um ponto-e-vírgula, mas isso simplesmente não é necessário aqui. É um script de shell completo, então você não precisa "empilhar" comandos dessa maneira.

Além disso, certifique-se de marcar o script executável, senão ele ainda não será executado.

Se tudo isso parecer estranho para você, com base no seu conhecimento de crontab entradas , saiba que executáveis nesses diretórios são normalmente executados por anacron ou run-parts , não por cron . Assim, as informações de man 5 crontab não se aplicam aqui.

    
por 03.07.2017 / 15:47
2

A maneira mais limpa de fazer isso é criar dois arquivos

  • /etc/cron.hourly/file1 contendo command1
  • /etc/cron.hourly/file2 contendo command2

Eu não recomendo ter um único cronjob executando command1 && command2 , porque se o primeiro comando falhar, o segundo nunca será executado por design.

Editar: caso você precise que o comando 1 seja executado antes do comando2, use o arquivo /etc/crontab padrão e preencha-o da seguinte forma:

0 * * * *  root  command1
5 * * * *  root  command2

Isso executará o comando1 às 00 min a cada hora e o comando2 às 05 min a cada hora.

    
por 03.07.2017 / 15:34