tar-файл не архивируется - PullRequest
1 голос
/ 07 июля 2011

В сценарии оболочки я делаю следующее:

tar cvzf mytar.tgz *

Это прекрасно работает, когда я запускаю сценарий оболочки из терминала.Когда он запускает скрипт оболочки из задания cron с использованием crontab, он выглядит так, как будто он заархивирован, потому что файл tgz есть, но размер файла - ничто, а когда я распаковываю его, там ничего нет.Однако, когда я запускаю скрипт оболочки через терминал, tgz имеет больший размер файла, и я могу их распаковать.

Кто-нибудь знает, почему он не работает через cronjob?

Ответы [ 4 ]

1 голос
/ 07 июля 2011

Попробуйте указать полный путь к файлам, которые вы хотите заархивировать:

tar cvzf mytar.tgz /path/to/your/files/*

Cron запускается из каталога, отличного от вашего $ HOME.

0 голосов
/ 07 июля 2011

Другие ответы пока дают хороший совет. Крон имеет много специальных правил относительно того, что разрешено в команде. У меня больше всего успеха, когда я делаю простой скрипт оболочки, помещаю его в $ HOME / cron, chmox 755 и указываю полный путь к нему в cron. Обязательно протестируйте скрипт - убедитесь, что cd'ing при необходимости. Имейте в виду, что cron не только не обязательно будет запускать команду из вашего дома, но также, скорее всего, будет иметь другой PATH, а другие параметры среды будут отсутствовать.

0 голосов
/ 07 июля 2011

Во-первых, не нужно быть многословным в кроне.

Во-вторых, похоже, вы используете относительный путь там.Рассмотрите возможность использования абсолютных путей даже для самой команды tar.

И последнее, какой пользователь запускает cron?Есть ли вероятность проблемы с разрешениями или квоты?

0 голосов
/ 07 июля 2011

Какой рабочий каталог у процесса cronjob? Если в нем ничего нет, то команда заархивирует все ничего.

...