Por favor, tente o que o @heemayl disse, use o caminho completo no seu test.sh
:
/sbin/ifconfig >/home/myname/ipt
Explicação
No prompt de comando e na execução de scripts, você está fazendo isso, pois o usuário possui determinados recursos, como
- a variável $ PATH inclui
/sbin/
para poder "saber" sempre que pedirifconfig
se referir a/sbin/ifconfig
Cron no entanto não é o mesmo usuário exato que você
- assim, quando o cron tenta rodar, ele não sabe onde
ifconfig
é - a menos que você especifique exatamente onde:
/sbin/ifconfig
O efeito de não saber onde um programa está, você pode testar por si mesmo, tente executar um programa que não existe em seu prompt de comando:
$ doesnotexist > ipt2
bash: doesnotexist: command not found
Observe quando você:
$ ls -lh ipt2
-rw-r--r-- 1 youruser youruser 0 Dec 17 14:48 ipt2
É um
- arquivo de 0 bytes
- somente leitura
Este é exatamente o mesmo resultado que você encontrou originalmente com o crontab, onde ele não sabia o que é ifconfig
, resultando em um arquivo de 0 byte, na maioria apenas de leitura.
Portanto, no cron, ajude-o a encontrar o programa apenas dando-lhe o caminho completo e, desde que você não tenha problemas de permissão, ele deve funcionar.