/ home / myname / bin / скрипт:
#!/bin/bash
ifconfig > /home/myname/foo
Crontab:
* * * * * /home/myname/bin/script
... ждет 1 минуту ...
@@ 11:35:51 [myname@comp - ~]$ ls foo
-rw-r--r-- 1 myname myname 0 Jul 7 11:35 foo
@@ 11:35:55 [myname@comp - ~]$
Я не могу понять, почему foo окажется пустым. Выполнение команды ifconfig в командной строке работает точно так, как вы ожидали, выводя ее вывод в файл, как обычно. Для справки, я использую Ubuntu 8.04.
попробуйте использовать в сценарии полный путь к исполняемому файлу ifconfig.
где ifconfig предоставит вам путь.
Я не знаю, что делает ipconfig в ubuntu. :)
В задании cron вы, вероятно, захотите перенаправить в файл как stdout, так и stderr. Измените свой сценарий на это:
#!/bin/bash
ifconfig &> /home/myname/foo
и вы увидите сообщение об ошибке в вашем выходном файле.
Видеть Все о перенаправлении в инструкции по программированию на Bash для получения дополнительной информации.
crontab не использует переменную пути пользователя.
Вы должны разместить команду с полным путем к ней. т.е. /sbin/ifconfig
. Тогда это будет работать.
Другой способ решить эту проблему - добавить переменную PATH в ваш скрипт и экспортировать ее, тогда ваш скрипт сможет использовать стандартные команды без добавления каждый раз полного пути. Вы можете проверить ввод пути echo $PATH
в терминале.
вы пробовали вручную запустить свой скрипт?
cd в / home / myname / bin /
./script
делает ли foo ожидаемым содержимым?
исполняемый файл сценария?
Я знаю, что это может показаться простым, но иногда это то, что упускается из виду, особенно когда я пишу сценарий.