Назад | Перейти на главную страницу

crontab ifconfig ничего не выводит

/ 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 для получения дополнительной информации.

  1. Вам, вероятно, понадобится полный путь к ipconfig в вашем сценарии, или вы имели в виду ifconfig? В любом случае следует использовать полный путь.
  2. Вы захватить стандартный вывод в / home / myname / foo, но не в stderr, который, вероятно, дает понять, что вам здесь не хватает. Проверьте свою электронную почту на предмет вывода cronjob.

crontab не использует переменную пути пользователя.

Вы должны разместить команду с полным путем к ней. т.е. /sbin/ifconfig. Тогда это будет работать.

Другой способ решить эту проблему - добавить переменную PATH в ваш скрипт и экспортировать ее, тогда ваш скрипт сможет использовать стандартные команды без добавления каждый раз полного пути. Вы можете проверить ввод пути echo $PATH в терминале.

вы пробовали вручную запустить свой скрипт?

cd в / home / myname / bin /

./script

делает ли foo ожидаемым содержимым?

исполняемый файл сценария?

Я знаю, что это может показаться простым, но иногда это то, что упускается из виду, особенно когда я пишу сценарий.