crontab ifconfig não produz nada

4

/ home / myname / bin / script:

#!/bin/bash
ifconfig > /home/myname/foo

Crontab:

* * * * * /home/myname/bin/script

... espera 1 minuto ...

@@ 11:35:51 [myname@comp - ~]$ ls foo
-rw-r--r-- 1 myname myname 0 Jul  7 11:35 foo
@@ 11:35:55 [myname@comp - ~]$ 

Eu não consigo entender porque foo acabaria vazio. Executar o comando ifconfig na linha de comando funciona exatamente como você esperaria, descartando sua saída em um arquivo como o normal. Para referência, estou executando o Ubuntu 8.04.

    
por dirtside 07.07.2009 / 20:40

5 respostas

11

tente usar o caminho completo para o executável ifconfig no seu script.

whereis ifconfig lhe dará o caminho.

Eu não sei o que o ipconfig faz no Ubuntu. :)

    
por 07.07.2009 / 20:47
3

Em uma tarefa cron você provavelmente deseja redirecionar stdout e stderr para o arquivo. Altere seu script para isso:

#!/bin/bash
ifconfig &> /home/myname/foo

e você verá a mensagem de erro no seu arquivo de saída.

Veja Tudo Sobre o Redirecionamento na programação do Bash How To para mais informações.

    
por 07.07.2009 / 21:05
2
  1. Você provavelmente precisará do caminho completo para o ipconfig no seu script, ou você quis dizer ifconfig ? De qualquer forma, você deve usar o caminho completo.
  2. Você captura stdout em / home / myname / foo, mas não stderr, que provavelmente recebe a pista de que está faltando aqui. Verifique no seu email a saída do cronjob.
por 07.07.2009 / 20:50
0

você tentou executar manualmente seu script?

copie para / home / myname / bin /

./ script

faz o foo com o conteúdo como esperado?

o script é executável?

Eu sei que isso pode soar como coisas simples, mas às vezes é isso que é esquecido, especialmente quando eu faço um script

    
por 07.07.2009 / 20:44
0

o crontab não usa a variável do caminho do usuário.

Você tem que colocar o comando com o caminho completo para ele. ou seja, /sbin/ifconfig . Então isso estará funcionando.

Outra maneira de resolver este problema é adicionar a variável PATH ao seu script e exportá-lo, então o seu script poderá usar comandos padrão sem adicionar caminho completo todas as vezes. Você pode verificar o caminho digitando echo $PATH no terminal.

    
por 16.01.2017 / 14:50

Tags