Cron работа в Ubuntu - PullRequest
       37

Cron работа в Ubuntu

2 голосов
/ 26 сентября 2011

Это должно быть довольно просто, но я не могу заставить его работать, несмотря на то, что я прочитал несколько учебных пособий через Google, Stackoverflow и страницу man.

Я создал крона, который будет запускаться каждые 1 минуту (длятестирование) и все, что он в основном делает, это выкладывает дату.

crontab -l
* * * * * /var/test/cron-test.sh

Файл cron-test:

echo "$(date): cron job run" >> test.log

Ждет много минут, и я никогда не вижу файл test.log.

Я могу вызвать "test.sh" вручную и получить его для вывода и добавления.

Мне интересно, что мне не хватает?Я также делаю это как root.Интересно, я что-то не понимаю в расположении root?Мой путь испорчен, потому что он добавляет к нему какой-то домашний каталог?

Спасибо!


ОБНОВЛЕНИЕ -----------------

Похоже, что я не следую что-то с путем к каталогу.Если я поменяю каталог на домашний каталог root:

# cd

я увижу выходной файл «test.log» со всеми датами, распечатываемыми каждую минуту.

Итак, я обновлю свой вопросбыть, что я не понимаю в / пути?Нужно ли использовать термин, чтобы он начинался с корневого каталога?

Приветствия!

ОБНОВЛЕНИЕ 2 -----------------

Хорошо, я получил то, чего мне не хватало.

Скрипт для настройки crontab работал правильно.Он находил файл относительно корневого каталога.то есть:

* * * * * /var/test/cron-test.sh

Но файл "cron-test.sh" не был установлен относительно корневого каталога.Таким образом, когда «root» запускал скрипт, он сбрасывал его обратно в домашний каталог «root».Я думал, что, поскольку скрипт запускается в "/ var / test /", файл также будет сохранен в "/var/test/".

Вместо этого мне нужно указать местоположение вфайл сценария для корректной выгрузки.

echo "$(date): cron job run" >> /var/test/test.log

И это работает.

Ответы [ 2 ]

5 голосов
/ 26 сентября 2011

Вы не указали никакого пути для test.log, поэтому он будет создан в текущем пути (который по умолчанию является домашним каталогом пользователя). Вам необходимо обновить скрипт и указать полный путь, например:

echo "$(date): cron job run" >> /var/log/test.log
2 голосов
/ 26 сентября 2011

Чтобы переформулировать ответ, который вы дали себе более подробно: cronjobs запускаются в домашнем каталоге исполняющего пользователя, в вашем случае root. Вот почему относительный файл оказался в корневом каталоге.

...