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. :)
/ 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.
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.
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
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.