Как настроить часовое задание Cron для запуска `grive` из` / etc / cron.hourly`?

Я добавил файл grive.sh в /etc/cron.daily, но команда не работает. Я также скопировал его в /etc/cron.hourly, но никаких изменений в моем каталоге Google Диска не было. Файл имеет только три строки:

#! /bin/sh cd /media/james/Seagate Expansion Drive/GD grive

Разрешения доступны только для чтения, поэтому я буду обновлять их.

Я использовал /etc/cron.hourly# chmod u+rwx grive.sh, но затем, когда я проверяю разрешения

Я могу запустить grive вручную с терминала, а файлы синхронизируются локально и онлайн.

root@james-Streacom:/etc/cron.hourly# grep CRON /var/log/syslog Feb 1 09:17:02 james-Streacom CRON[8696]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Feb 1 10:17:01 james-Streacom CRON[10958]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Feb 1 11:17:01 james-Streacom CRON[12897]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Feb 1 12:17:01 james-Streacom CRON[15307]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Feb 1 13:17:01 james-Streacom CRON[17043]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Feb 1 14:17:01 james-Streacom CRON[17354]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) Feb 1 15:17:01 james-Streacom CRON[17705]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly) root@james-Streacom:/etc/cron.hourly# cd / && run-parts --report /etc/cron.hourly root@james-Streacom:/# bash -c "cd / && run-parts --report /etc/cron.hourly" root@james-Streacom:/# Я не могу понять,

Обратите внимание, что это может быть дубликат задания cron не работает, если вы помещаете в `/ etc / cron.hourly /`, но работаете, когда определено в `crontab -e`, я просто просматриваю эти шаги.

Я добавил echo test >/tmp/foobar.tmp к последней строке скрипта.

root@james-Streacom:/etc/cron.hourly# grep 'cron\.hourly' /etc/crontab 17 * * * * root cd / && run-parts --report /etc/cron.hourly

/temp/foobar.tmp не существует.

Я попытался фактически запустить # cd /media/james/Seagate Expansion Drive/GD и получил ошибку -su: cd: too many arguments. Затем я изменил строку cd в скрипте на cd /media/james/"Seagate Expansion Drive"/GD.

$ echo test >/tmp/foobar.tmp создает файл с тестом в нем. # echo test2 >/tmp/foobar.tmp перезаписывает тест с помощью test2.

0
задан 1 February 2018 в 09:34

4 ответа

Я действительно не задаю ваш вопрос, хотя по моему опыту некоторые команды работают не так, как ожидалось, когда вы добавляете их в скрипт и помещаете в cronjob.

Я бы начал с добавления это новый файл в /etc/cron.d/test как следующий (я буду настраивать его каждые 5 минут, чтобы получить несколько журналов для целей тестирования):

# m h dom mon dow user command */5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

Пожалуйста, смотрите stdout в /var/log/grivesh.log, как только вы он анализировал, что вы можете настроить cronjob один раз в час (например, в минуту 5 каждый час):

# m h dom mon dow user command 5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

Необходимо иметь его в /etc/cron.hourly/? Не смотрите на /etc/cron.d/ или в crontab для вашего пользователя?

С уважением,

0
ответ дан 17 July 2018 в 21:47

Помимо некорректного пробела в исходном скрипте (который вы, похоже, исправили), проблема, вероятно, связана с наименованием вашего скрипта.

Согласно разделу DEBIAN SPECIFIC в man cron:

As described above, the files under these directories have to be pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root. Additionally, the file names must conform to the filename requirements of run-parts: they must be entirely made up of letters, digits and can only contain the special signs underscores ('_') and hyphens ('-'). Any file that does not conform to these requirements will not be executed by run-parts. For example, any file containing dots will be ignored. This is done to prevent cron from running any of the files that are left by the Debian package management system when handling files in /etc/cron.d/ as configuration files (i.e. files ending in .dpkg-dist, .dpkg-orig, and .dpkg-new).

Поскольку grive.sh имеет точку в своем имени, run-parts будет игнорировать его.

2
ответ дан 17 July 2018 в 21:47

Я действительно не задаю ваш вопрос, хотя по моему опыту некоторые команды работают не так, как ожидалось, когда вы добавляете их в скрипт и помещаете в cronjob.

Я бы начал с добавления это новый файл в /etc/cron.d/test как следующий (я буду настраивать его каждые 5 минут, чтобы получить несколько журналов для целей тестирования):

# m h dom mon dow user command */5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

Пожалуйста, смотрите stdout в /var/log/grivesh.log, как только вы он анализировал, что вы можете настроить cronjob один раз в час (например, в минуту 5 каждый час):

# m h dom mon dow user command 5 * * * * root [DIR_TO_SCRIPT]/grive.sh >> /var/log/grivesh.log 2>&1

Необходимо иметь его в /etc/cron.hourly/? Не смотрите на /etc/cron.d/ или в crontab для вашего пользователя?

С уважением,

0
ответ дан 23 July 2018 в 22:24

Помимо некорректного пробела в исходном скрипте (который вы, похоже, исправили), проблема, вероятно, связана с наименованием вашего скрипта.

Согласно разделу DEBIAN SPECIFIC в man cron:

As described above, the files under these directories have to be pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root. Additionally, the file names must conform to the filename requirements of run-parts: they must be entirely made up of letters, digits and can only contain the special signs underscores ('_') and hyphens ('-'). Any file that does not conform to these requirements will not be executed by run-parts. For example, any file containing dots will be ignored. This is done to prevent cron from running any of the files that are left by the Debian package management system when handling files in /etc/cron.d/ as configuration files (i.e. files ending in .dpkg-dist, .dpkg-orig, and .dpkg-new).

Поскольку grive.sh имеет точку в своем имени, run-parts будет игнорировать его.

2
ответ дан 23 July 2018 в 22:24
  • 1
    Спасибо, я переименовал файл в grive и подождем час и посмотрю, будет ли он работать. – James Ray 2 February 2018 в 11:40

Другие вопросы по тегам:

Похожие вопросы: