/ etc / crontab o que significa “test -x”

5

No meu arquivo /etc/crontab , tenho:

# m h dom mon dow user  command
17 *  * * * root    cd / && run-parts --report /etc/cron.hourly
25 6  * * * root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6  * * 7 root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6  1 * * root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

Eu sei o que isso faz na prática, mas não entendo as linhas de comando.

O "teste" do homem não ajuda em nada:

test - check file types and compare values

Qualquer ajuda seria muito apreciada

    
por Olivier Pons 05.12.2011 / 09:14

3 respostas

10

Do man test : [1]

do FreeBSD
 -x file       True if file exists and is executable.  True indicates only
               that the execute flag is on.  If file is a directory, true
               indicates that file can be searched.

Assim, o teste de cronjobs se houver anacron installed [2] (ou seja, existe um executável chamado anacron no lugar esperado) e executar algo se não - ou seja, os scripts nos respectivos /etc/cron.* pastas.

(1) O test do Bash tem a mesma opção -x

(2) O Anacron é um substituto do cron projetado para computadores que nem sempre estão em execução, ou seja, se houver um trabalho a ser executado semanalmente , ele será executado semanalmente em relação ao tempo de atividade do computador, o que significa que ele não será executado a cada sexta-feira, mas a cada 24 * 7 horas de tempo de atividade. ( Editar eu tenho tudo errado, veja comentários)

    
por 05.12.2011 / 09:22
5

Você pode estar familiarizado com [ -x <filename> ] . test -x <filename> faz a mesma coisa, teste se esse arquivo existe e é executável.

    
por 05.12.2011 / 10:46
0

Como citado na man page, o teste é muito semelhante ao eval, ele avalia uma expressão condicional expr e sai com o status de retorno. Geralmente, os casos encontrados são usados para determinar o tipo do arquivo como uma expressão, nos casos em que ele é usado para verificar o retorno de um caso verdadeiro ou falso. No seu crontab, test -x filename , onde filename é usado como expressão. Isso também é equivalente a [ -x filename ] . Isso retornará verdadeiro se o arquivo estiver presente e também for executável (o bit está definido). man test fornece detalhes definitivos das diversas opções de tipos para avaliar as expressões condicionais nos arquivos e outras expressões de shell válidas.

Por exemplo:

test -1 -gt -2 && echo yes imprimiria sim.

test 0x100 -eq 1      erro - > teste: expressão inteira esperada antes -eq

    
por 05.12.2011 / 09:32

Tags