Ordem de execução com vários comandos

5

Sou relativamente novo no Linux e estou trabalhando em um CronTab para backups agendados. Eu descobri como fazer vários trabalhos sequenciais com ; e && , mas não tenho certeza de como a dependência afeta a sequência.

Meu trabalho cron é assim:

# Every day at 0:00 (reboot server and do the hourly backup procedure).
0 0 * * * sh shutdown.sh && sh backup.sh ; sh nas.sh ; sh ftp.sh ; sh startup.sh        

O que eu quero que aconteça é executar o shutdown.sh e continuar a seqüência se for bem-sucedida, mas cancelá-la se falhar. Meu medo é que ele pule apenas sh backup.sh , mas continue a sequência.

Funcionará como pretendido? Se não, algo como shutdown && (backup ; nas ; ftp ; startup) seria possível?

    
por Taesh 15.06.2014 / 01:39

2 respostas

10

Por que você não testa com alguns comandos fictícios que você sabe que funcionarão ou falharão?

$ ls foo && echo ok1 ; echo ok2
ls: cannot access foo: No such file or directory
ok2

$ ls foo && (echo ok1 ; echo ok2)
ls: cannot access foo: No such file or directory

Parece que a sua intuição estava correta e você precisa da segunda estrutura.

Como sugerido por mikeserv , para testes em geral, você pode usar true (ou : ) e false , em vez de ls de um arquivo inexistente. Portanto,

$ false && echo ok1 ; echo ok2
ok2

$ false && (echo ok1 ; echo ok2)
    
por 15.06.2014 / 02:18
0

se o shutdown.sh realmente reinicializar seu servidor, eu não acho que os outros comandos serão executados ?? resposta pode ser excluída, mas você pode lê-lo, então aqui estão apenas algumas dicas: coloque os scripts em uma pasta própria e chame-os com caminho completo, o cron pode ser executado em uma pasta diferente. tornando-os executáveis e chamando-os diretamente sem sh é legal também. Colocar toda a lógica em um script extra com um if-else é uma boa codificação também. se você se preocupar com sh sendo usado como shell, use um shebang.

    
por 15.06.2014 / 03:54

Tags